コマンドラインでC#プログラミング[引越記事]
はじめに
C#でプログラミングをする場合、Visual Studioは非常に便利で強力な開発ツールです。しかしながら、例えば、ネット上のコードスニペットをちょっと実行してみたいときとか、ちょっとした処理をさせるための数行のアプリケーションを作成したいとき、Visual Studioはちょっと重いですし、Visual Studioが使えない環境での開発もあります。 そんなとき、コマンドラインからプロジェクトの作成やコンパイル、実行ができればとても便利です。
環境
.NET SDKのインストール
Visual Studioで.NET開発のワークロードをインストール済みであれば.NET Coreや.NET Frameworkの開発環境がすでにインストールされていると思います。
開発環境がインストールされているかどうかは、コマンドラインから以下のように確認できます。 バージョン番号が表示されれば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
先のチュートリアルでは後者の方法ですね。どちらでも良いです。 プロジェクトフォルダの中に、このようなファイルやフォルダが生成されます。
プロジェクトテンプレート
上の例ではコンソールアプリケーションのテンプレートを指定しています。 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
フォルダに移動して、ファイルやフォルダが作成されていることを確認してください。
実行しよう
プロジェクトを実行するにはシンプルに以下のコマンドを使います。 プロジェクトのビルドが行われ、実行されます。
> dotnet run
コマンドラインにHello World!
と表示されるはずです。
ビルドのみはこちら
ビルドのみはdotnet build
です。
> dotnet build
プログラミング
プログラミングは好きなテキストエディタを使いましょう。メモ帳だってかまいませんが、Visual Studio Codeなどの高機能なテキストエディタのほうがプログラミングしやすいと思います。
さしあたり、プロジェクトフォルダ内のProgram.cs
を開きましょう。
メモ帳:
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を使っているほうはコンパイルがとおります。
おわりに
長くなってしまいましたが、コマンドラインから.NETアプリケーションを開発する手順です。 ちょっとコードを動かしてみたいなどの使い方はもちろんのこと、Visual Studio Codeなどの高機能エディタを活用することでそれなりのボリュームのアプリケーションを開発することも可能です。