こんにちは、 情報システム部の高野です。
タイトル通りの内容です。社内勉強会のために調べたので載せておきます。
(VisualStudioを使えばいいじゃないって話なんですが、それを言ったらおしまいです)
環境
Windows10
.NET Tools 1.0.1
構成
最終的に下図のような構成にします。
作成手順
ソリューションのディレクトリを作成します。
ここではSampleプロジェクトとします。
mkdir Sample && cd Sample
ソリューションファイルを作成します。
デフォルトでディレクトリ名と同じ名前のソリューションファイルが作成されます。
dotnet new sln
ClassLibraryプロジェクトのディレクトリを作成します。
mkdir src\ClassLibrary && cd src\ClassLibrary
ClassLibraryプロジェクトを作成します。
デフォルトで言語はC#、フレームワークはnetstandard1.4になります。
フレームワークは後からでもcsprojファイルを変更すれば変えられます。
dotnet new classlib
一応、問題ないか確認するためリストアとビルドをしておきます。
dotnet restore dotnet build
ソリューションファイルにプロジェクトを追加します。
ソリューションファイルが存在するディレクトリで実行する場合は、ソリューションファイル名は省略可能です。
dotnet sln ..\..\Sample.sln add ClassLibrary.csproj
ちゃんと追加されたか確認します。
dotnet sln ..\..\Sample.sln list Project reference(s) -------------------- src src\ClassLibrary\ClassLibrary.csproj
nugetからパッケージを追加してみます。
csprojファイルに追加されるのでリストアすれば利用できるようになります。
dotnet add package Microsoft.Data.SQLite
同様にテストプロジェクトも作成します。
cd ..\.. mkdir test\ClassLibraryTest && cd test\ClassLibraryTest dotnet new xunit dotnet sln ..\..\Sample.sln add ClassLibraryTest.csproj
テストプロジェクトはクラスライブラリプロジェクトを参照する必要があるので
参照するようにコマンドを実行します。
dotnet add reference ..\..\src\ClassLibrary\ClassLibrary.csproj
csprojファイルに参照設定が追記されます。
ここまでの手順で2つのプロジェクトを持つソリューションが作成できました。
手順としては、VisualStudioのGUIで作成するよりは手間がかかりますが
最初だけなので問題ない範囲なのではないでしょうか?
問題点
少し余談的な話になるのですが、テストを記述して実行します。
VSCodeのコードレンズのrun testからテストを実行すると
「Failed to run test because null」
と表示されテストが実行できない。
多分、下記の問題なので待つしか無さそう。
github.com
今のところはコマンドで
dotnet test
でもコマンドだと結果が文字化けします。
これはターミナルの文字コードをUTF-8にすれば解消されます。
chcp 65001
さらに余談
以前は、dotnet buildやdotnet restoreはプロジェクトファイルがある場所で実行するか
コマンドにパスを指定して1つ1つ実行する必要があったのですが
現在は、ソリューションのディレクトリでコマンドを実行すると
ソリューションに属するプロジェクトすべてに実行が可能になってます。
便利になったというか以前が不便すぎましたね。
弊社ではエンジニアを募集しています。
興味がある方は下記からエントリお願いします。
athome-inc.jp