A certain engineer "COMPLEX"

.NETでLinuxと遊んでみる Visual Studio Code編 第1回

Introduction


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

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

Preparation


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

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


$ 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の正式なプレビューがリリースされました。

Microsoftが.NET Core 2 Preview 1のリリースを発表した。.NET Standard 2準拠になり、はじめてVisual Basicをサポートする。

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

Build


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

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


$ 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.

続いてビルドします。


$ 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


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


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

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


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

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


$ file DotNetCoreLinux1.dll
DotNetCoreLinux1.dll: PE32 executable (console) Intel 80386 Mono/.Net assembly, for MS Windows

Debug


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

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

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

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

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

Conclusion


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

コメントを残す

メールアドレスが公開されることはありません。

%d人のブロガーが「いいね」をつけました。