Introduction

前回は、**.NET CoreVisual Studio Code拡張機能**をインストールしました。

今回はプロジェクトを作って実行します。

Preparation

まずは、プロジェクトフォルダを作成します。
これはどこでも良いので、今回は、**~/git/Demo/DotNetCoreLinux1**とします。
このフォルダを以降、プロジェクトフォルダと呼称します。

まず端末を開き、プロジェクトフォルダに移動し、下記のコマンドを入力します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ cd ~/git/Demo/DotNetCoreLinux1
$ dotnet new
Welcome to .NET Core!
---------------------
Learn more about .NET Core @ https://aka.ms/dotnet-docs. Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
Telemetry
--------------
The .NET Core tools collect usage data in order to improve your experience. The data is anonymous and does not include commandline arguments. The data is collected by Microsoft and shared with the community.
You can opt out of telemetry by setting a DOTNET_CLI_TELEMETRY_OPTOUT environment variable to 1 using your favorite shell.
You can read more about .NET Core tools telemetry @ https://aka.ms/dotnet-cli-telemetry.
Configuring...
-------------------
A command is running to initially populate your local package cache, to improve restore speed and enable offline access. This command will take up to a minute to complete and will only happen once.
Decompressing 100% 5707 ms
Expanding 100% 20878 ms
Created new C# project in /home/XXXXX/git/Demo/DotNetCoreLinux1.

初めてdotnet newした場合は、環境の初期化が実行されます。
以降は表示されません。

これにより、プロジェクトフォルダ配下に

  • Program.cs
  • project.json

が生成されます。
なお、project.jsonによるプロジェクト管理は、.NET Core 2.0から廃止が決定されています。
下記では、.NET Core 2.0のプレビュー利用しました。作成されたのは、corecli.csprojという見慣れた拡張子でした。

なので、正直、.NET Core 1.1系で勉強する意味は無いのですが、Linux初心者な自分にとっては、Linuxを使って何かをなすことが大事なので無視します。
ですが、2017/05/16に.NET Core 2.0の正式なプレビューがリリースされました。

なので、RHELでのサポートも近いでしょう。

Build

準備が出来ました。
プロジェクトの作成が出来たので、ビルドして実行します。
単純にHello, Worldと表示されるだけですが、重要なのは、環境構築ができており、.NET Coreを使ったプログラミングが可能であることの確認です。

まず、下記のコマンドを実行し、リストアします。
newした直後は、最低限しかファイルが内ので、nugetのリストアみたいに依存関係にあるライブラリの復元を行います。

1
2
3
4
5
6
7
$ dotnet restore
log : Restoring packages for /home/XXXXXX/git/Demo/DotNetCoreLinux1/project.json...
log : Installing System.Reflection.Metadata 1.4.1.
log : Installing System.Collections.Immutable 1.3.0.
log : Writing lock file to disk. Path: /home/XXXXXX/git/Demo/DotNetCoreLinux1/project.lock.json
log : /home/XXXXXX/git/Demo/DotNetCoreLinux1/project.json
log : Restore completed in 6214ms.

続いてビルドします。

1
2
3
4
5
6
7
8
9
$ dotnet build
Project DotNetCoreLinux1 (.NETCoreApp,Version=v1.1) will be compiled because expected outputs are missing
Compiling DotNetCoreLinux1 for .NETCoreApp,Version=v1.1

Compilation succeeded.
0 Warning(s)
0 Error(s)

Time elapsed 00:00:04.7665117

Run

エラーがないので、実行します。

1
$ dotnet run Project DotNetCoreLinux1 (.NETCoreApp,Version=v1.1) was previously compiled. Skipping compilation. Hello World!

予想通りの結果です。
ちなみに、プロジェクトフォルダ直下でdotnet runではなく、次のように、実際のバイナリがあるフォルダで実行も出来ます。

1
2
3
$ dotnet run
Project DotNetCoreLinux1 (.NETCoreApp,Version=v1.1) was previously compiled. Skipping compilation.
Hello World!

dllとなっていますが、実行ファイルです。

1
2
3
$ cd bin/Debug/netcoreapp1.1/
$ dotnet DotNetCoreLinux1.dll
Hello World!

Debug

まず、コンソールが問題ないことがわかりましたので、プロジェクトフォルダをVisual Studio Codeで開きます。
ファイル->フォルダーを開くで開くことが可能です。

プロジェクトを開いた状態です。

Program.cs を選択し、実行可能行の左端をクリックするか、実行可能業にカーソルを置いて F9 を押下して、ブレークポイントを貼ります。
Visual Studioと同じ操作です。

F5 を押下してデバッグ実行します。
こちらもVisual Studioと同じ操作です。
しかし、実行できません。
よく見ると、ビルドとデバッグに必要なアセットが見つからないので、追加するかを尋ねられますので、Yes と応えます。
こういう細かいところはまだ日本語化されていない模様。

再度実行すると、成功し、ブレークポイントで実行が停止しているのがわかります。

Conclusion

Dockerのようなコンテナでは無く、自分で構築したOS上に、自分で.NET Coreをインストールし、CUI、GUI上で実行、デバッグまで出来るようになりました。
次は何か小さなツールを作ってみます。