Introduction
2017/04/23現在、**.NET Core 2.0の開発が進められます。
そんな **.NET Core 2.0 の Preview を使ってコンソールアプリを作ります。
目標は
- Visual Studio Codeを使えるようになる
- .NET Coreを使えるようになる
- Linuxでビルドして実行
になります。
特にLinuxでの実行が重要になります。
開発環境を広げないと、飯の種が無くなってしまいますので。
今回は準備と作成を。
.NET Core 2.0 Preview
まずは.NET Coreを入手します。
入手先は下記。
上のページで、Installers and Binariesってセクションから環境に応じたものを入手します。
今回は、zipで入手します。Previewなんて先行版をインストーラでインストールしたくありません(キリッ)
これは適当な場所に置いておきます。今回は D:\Works\Lib\Microsoft.NET Core CLI\2.0.0-preview2-005840\bin に展開します。
パスを通すかはお好みで。
Visual Studio Code
入手
ダウンロード先は下記です。以上。
C# Extension
Visual Studio Code起動後、拡張機能を導入します。
C#はMicrosoftにおける第一級のプログラミング言語ですが、Visual Studio Codeは、クロスプラットフォームで動作するので、そのあたりの特別扱いはできなかった、あるいはIDEではなくエディタという位置づけなので、言語対応は全て拡張機能で追加しましょう、なスタンスのご様子。面倒。
コーディング
まず、プロジェクトフォルダを作成します。
Visual Studio Codeでは、プロジェクトという概念がありません。エディタだからですかね。
あるのは、開いたフォルダが起点となるという概念だけです。
今回はD:\Works\temp\corecli をプロジェクトフォルダにします。
プロジェクトの作成は、先ほど入手した.NET Coreを使います。
まず、コマンドラインでプロジェクトフォルダに移動します。
続いて、.NET Coreに含まれる dotnet.exe を–helpをつけて呼び出します。
1 | D:\Works\temp\corecli>"D:\Works\Lib\Microsoft\.NET Core CLI\2.0.0-preview2-005840\bin\dotnet.exe" --help |
色々ありますが、new でプロジェクトを初期化することがわかります。
ではnewをつけて呼び出します。
1 | D:\Works\temp\corecli>"D:\Works\Lib\Microsoft\.NET Core CLI\2.0.0-preview2-005840\bin\dotnet.exe" new |
コンソールアプリは、consoleをつける模様。
最後に、new consoleを付けて実行します。
1 | D:\Works\temp\corecli>"D:\Works\Lib\Microsoft\.NET Core CLI\2.0.0-preview2-005840\bin\dotnet.exe" new console |
そうすると、プロジェクトフォルダに、
- obj
- corecli.csproj
- NuGet.config
- Program.cs
が作成されます。
csprojを見ると、Visual Studioを思い出しますが、中身は少し違います。
ファイルへの参照がない。
1 | <Project Sdk="Microsoft.NET.Sdk"> |
次に、このフォルダをVisual Studio Codeで開きます。メニューに フォルダーを開く がありますので、そこから開きます。
すると、Required assets to build and debug are missing from ‘corecli’. Add them? と聞かれます。
Yesと応えると、プロジェクトに
- .vscode\tasks.json
- .vscode\launch.json
が追加されます。
同時に、There are unresolved dependencies from ‘corecli.csproj’. Please execute the restore command to continue. と聞かれますが、Restoreを選んでも下記のエラーになります。
error: Invalid input 'd:\Works\temp\corecli\corecli.csproj'. The file type was not recognized. Done: 1.
なので、これは諦めます。
デバッグ&実行
現時点で、Program.csには、Hello World! と表示するコードが書かれています。
これを実行します。
Console.WriteLine にF9でブレークポイントを置き、F5で実行してみます。このあたりはVisual Studioと同じで助かります。
実行すると、エラーがでます。
問題を表示するとあるのでクリックしますが、
現時点で問題はワークスペースで検出されていません。 と言われます。意味がわかりません。
仕方ないので、もう一度実行し、今度はこのままデバッグを続ける をクリックします。
すると、今度は下記のメッセージが表示されました。
1 | ------------------------------------------------------------------- |
どうも、依存関係が見つからないご様子。
なので、.NET Core 2.0のフォルダにある、shared\Microsoft.NETCore.App\2.0.0-preview1-002061-00 を C:\Program Files\dotnet\shared\Microsoft.NETCore.App にコピーします。
その後、もう一度F5実行し、このままデバッグを続ける をクリックします。
今度は、実行に成功し、ブレークポイントに停止しました。
カーソルを次に進めると、下のコンソールにHello World! が表示されます。
少し手こずりましたが、何とか動きました。
あと、実行アセンブリは、dllが拡張子なのね…
コンソールからビルド&実行
Visual Studio Codeから実行しましたが、dotnet.exeからもビルドしてみます。
同じようにカレントをプロジェクトフォルダに移動したコマンドプロンプトから下記でビルドします。
1 | D:\Works\temp\corecli>"D:\Works\Lib\Microsoft\.NET Core CLI\2.0.0-preview2-005840\bin\dotnet.exe" build |
続いて実行します。
1 | D:\Works\temp\corecli>"D:\Works\Lib\Microsoft\.NET Core CLI\2.0.0-preview2-005840\bin\dotnet.exe" run |
問題なく実行できました。
これならLinuxでも実行できそうです。