shuhelohelo’s blog

Xamarin.Forms多めです.

コマンドラインでC#プログラミング[引越記事]

はじめに

C#でプログラミングをする場合、Visual Studioは非常に便利で強力な開発ツールです。しかしながら、例えば、ネット上のコードスニペットをちょっと実行してみたいときとか、ちょっとした処理をさせるための数行のアプリケーションを作成したいとき、Visual Studioはちょっと重いですし、Visual Studioが使えない環境での開発もあります。 そんなとき、コマンドラインからプロジェクトの作成やコンパイル、実行ができればとても便利です。

環境

  • Windows 10 Pro バージョン1809
  • .NET SDKインストール済み

.NET SDKのインストール

Visual Studioで.NET開発のワークロードをインストール済みであれば.NET Coreや.NET Frameworkの開発環境がすでにインストールされていると思います。

image.png

開発環境がインストールされているかどうかは、コマンドラインから以下のように確認できます。 バージョン番号が表示されればOKです。

> dotnet --version
2.1.403

dotnetなんてコマンドは無いよ、って言われた場合はVisual Studioをインストールするか、.NET SDKをインストールしましょう。 Microsoftこちらのページコマンドラインからプログラミングをするチュートリアルになっていて、.NET SDKのインストールから実行までの手順が書いてあります。 書いてあるのですが、解説を続けます。

プロジェクトを作ろう

dotnet newコマンドでプロジェクトを作成します。プロジェクトを作成するとき、プロジェクトのフォルダを作ってそのフォルダ内でdotnet new プロジェクトテンプレートとするか、

> cd TestApp
> dotnet new console

またはdotnet new プロジェクトテンプレート -o プロジェクト名として、プロジェクト作成時にフォルダを指定するかです。

> dotnet new console -o TestApp

先のチュートリアルでは後者の方法ですね。どちらでも良いです。 プロジェクトフォルダの中に、このようなファイルやフォルダが生成されます。 image.png

プロジェクトテンプレート

上の例ではコンソールアプリケーションのテンプレートを指定しています。 Visual Studioでアプリケーションを作るときは「WPFアプリケーション」や「コンソールアプリケーション」、「ASP.NET Core」など作成したいアプリケーションの種類に応じてテンプレートを選択しましたが、それを文字で指定しています。 他にどのような種類があって、指定するための文字列は何でしょうか。

テンプレートの種類と指定に使う文字列表現

以下のコマンドを入力すると、テンプレートの一覧を見ることができます。

> dotnet new -h
テンプレート                                            短い名前               言語                タグ
----------------------------------------------------------------------------------------------------------------------------
Console Application                               console            [C#], F#, VB      Common/Console
Class library                                     classlib           [C#], F#, VB      Common/Library
Unit Test Project                                 mstest             [C#], F#, VB      Test/MSTest
NUnit 3 Test Project                              nunit              [C#], F#, VB      Test/NUnit
NUnit 3 Test Item                                 nunit-test         [C#], F#, VB      Test/NUnit
xUnit Test Project                                xunit              [C#], F#, VB      Test/xUnit
Razor Page                                        page               [C#]              Web/ASP.NET
MVC ViewImports                                   viewimports        [C#]              Web/ASP.NET
MVC ViewStart                                     viewstart          [C#]              Web/ASP.NET
ASP.NET Core Empty                                web                [C#], F#          Web/Empty
ASP.NET Core Web App (Model-View-Controller)      mvc                [C#], F#          Web/MVC
ASP.NET Core Web App                              razor              [C#]              Web/MVC/Razor Pages
ASP.NET Core with Angular                         angular            [C#]              Web/MVC/SPA
ASP.NET Core with React.js                        react              [C#]              Web/MVC/SPA
ASP.NET Core with React.js and Redux              reactredux         [C#]              Web/MVC/SPA
Razor Class Library                               razorclasslib      [C#]              Web/Razor/Library/Razor Class Library
ASP.NET Core Web API                              webapi             [C#], F#          Web/WebAPI
global.json file                                  globaljson                           Config
NuGet Config                                      nugetconfig                          Config
Web Config                                        webconfig                            Config
Solution File                                     sln                                  Solution

このリストの2列目の「短い名前」というのが、テンプレートを指定するときに使う名前になっています。 試しに「ASP.NET Core Web App(Model-View-Controller」のプロジェクトを作成してみましょう。テンプレート名は「mvc」ですね。

> dotnet new mvc -o TestMVC

プロジェクトの生成が完了したらTestMVCフォルダに移動して、ファイルやフォルダが作成されていることを確認してください。 image.png

実行しよう

プロジェクトを実行するにはシンプルに以下のコマンドを使います。 プロジェクトのビルドが行われ、実行されます。

> dotnet run

コマンドラインHello World!と表示されるはずです。

ビルドのみはこちら

ビルドのみはdotnet buildです。

> dotnet build

プログラミング

プログラミングは好きなテキストエディタを使いましょう。メモ帳だってかまいませんが、Visual Studio Codeなどの高機能なテキストエディタのほうがプログラミングしやすいと思います。

さしあたり、プロジェクトフォルダ内のProgram.csを開きましょう。

メモ帳:

Visual Studio Code

Visual Studio Codeのほうがハイライトされて見やすいのでおすすめです。 というようにお好きなテキストエディタでプログラムを編集して、保存したのちに前述の方法で実行すれば良いです。

追記(2018.10.18): Visual Studio Codeを使うと便利と書きましたが、拡張機能を入れることによって開発がさらに便利になります。書くだけではなく、ソースコードの整形やブレークポイントを使ったデバッグなどについてはこちら

.NET Coreアプリはわかった。だが.NET Frameworkアプリはどうだ?

Windowsであれば、.NET Frameworkを使うこともできます。 その場合、プロジェクト生成の際にフレームワーク指定してやります。

> dotnet new console --target-framework-override フレームワーク名

フレームワーク名はこちらにあるように、種類、バージョンごとに指定に用いる文字列が決まっています。 例えば「.NET Framework 4.6.0」を使いたいのであれば、「net46」をフレームワーク名として使用します。

> dotnet new console --target-framework-override net46 -o TestApp4

こうして作られたプロジェクトは.NET Framework 4.6.0で使えるAPIを使ってプログラムを作成することができます。 左は.NET Coreで、右が.NET Framework 4.6.0です。

System.Drawing.Imageクラスは.NET Coreには含まれていないため、コンパイルエラーになりますが、.NET Framework 4.6.0を使っているほうはコンパイルがとおります。

image.png

おわりに

長くなってしまいましたが、コマンドラインから.NETアプリケーションを開発する手順です。 ちょっとコードを動かしてみたいなどの使い方はもちろんのこと、Visual Studio Codeなどの高機能エディタを活用することでそれなりのボリュームのアプリケーションを開発することも可能です。