このチュートリアルでは、Visual Studio で ソリューション と プロジェクト を作成する意味について説明します。 ソリューションは、クラス ライブラリ プロジェクトや対応するテスト プロジェクトなど、1 つ以上の関連するコード プロジェクトを整理するためのコンテナーです。 ソリューション内のあるプロジェクトから別のプロジェクトへの参照を作成します。 このチュートリアルでは、プロジェクトのプロパティと、プロジェクトに含めることができるファイルの一部についても説明します。
プロジェクトの概念を理解するための演習として、ソリューションとプロジェクトをゼロから作成します。 通常、Visual Studio プロジェクト テンプレート を使用して新しいプロジェクトを作成します。
このチュートリアルでは、以下の内容を学習します。
- プロジェクトに項目を追加する
- 2 つ目のプロジェクトを追加する
- プロジェクト参照を追加する
- テスト コードを追加する
- プロジェクトのプロパティを表示する
[前提条件]
- Visual Studio 2019 をお持ちでない場合は、 Visual Studio のダウンロード に移動して無料でインストールしてください。
- Visual Studio をお持ちでない場合は、Visual Studio のダウンロード に移動して無料でインストールしてください。
ソリューションとプロジェクト
Visual Studio では、ソリューションは 答えではありません。 ソリューションは、Visual Studio が 1 つ以上の関連プロジェクトを整理するために使用する単なるコンテナーです。 ソリューションを開くと、ソリューションに含まれるすべてのプロジェクトが Visual Studio によって自動的に読み込まれます。
注
Visual Studio でアプリを開発する場合、ソリューションとプロジェクトは必要ありません。 コードを含むフォルダーを開き、コーディング、ビルド、デバッグを開始できます。 たとえば、複製された GitHub リポジトリに Visual Studio のプロジェクトとソリューションが含まれていない場合があります。 詳細については、「 プロジェクトやソリューションを使用せずに Visual Studio でコードを開発する」を参照してください。
ソリューションを作成する
空のソリューションを作成して探索を開始します。 Visual Studio を知った後は、空のソリューションを頻繁に作成することはないでしょう。 新しいプロジェクトを作成すると、ソリューションが既に開いていない限り、Visual Studio によってプロジェクトのソリューションが自動的に作成されます。
Visual Studio を開きます。
[スタート ウィンドウ] で、 [新しいプロジェクトの作成] を選択します。
[ 新しいプロジェクトの作成 ] ページで、検索ボックスに 「空のソリューション 」と入力し、 空のソリューション テンプレートを選択して、[ 次へ] を選択します。
ヒント
複数のワークロードがインストールされている場合は、検索結果の一覧の上部に 空のソリューション テンプレートが表示されないことがあります。 リストの検索セクションに 基づいて、その他の結果 までスクロールしてみてください。 そこに表示されます。
ソリューションに QuickSolution という名前を付け、[ 作成] を選択します。
ソリューションがソリューション エクスプローラー の Visual Studio ウィンドウの右側に表示されます。 ソリューション エクスプローラーを頻繁に使用して、プロジェクトの内容を参照します。
Visual Studio を開き、スタート ウィンドウで [ 新しいプロジェクトの作成] を選択します。
[ 新しいプロジェクトの作成 ] ページで、検索ボックスに 空のソリューション を入力し、空の ソリューション テンプレートを選択して、[ 次へ] を選択します。
ヒント
複数のワークロードがインストールされている場合は、検索結果の一覧の上部に 空のソリューション テンプレートが表示されないことがあります。 検索に基づいて他の結果をスクロールして、テンプレートを見つけてください。
[ 新しいプロジェクトの構成] ページで、ソリューション に QuickSolution という名前を付け、[ 作成] を選択します。
ソリューション エクスプローラーの Visual Studio ウィンドウの右側に QuickSolutionソリューション が表示されます。 ソリューション エクスプローラーを使用して、プロジェクトの内容を参照することがよくあります。
プロジェクトを追加する
次に、最初のプロジェクトをソリューションに追加します。 空のプロジェクトから始めて、必要な項目を追加します。
ソリューション エクスプローラーで、ソリューションの [QuickSolution] を右クリックします。 コンテキスト メニューの [ 追加>新しいプロジェクト] を選択します。
[新しいプロジェクトの追加] というダイアログ ボックスが開きます。
上部の検索ボックスに空のテキストを入力し、[言語] で [C#] を選択します。
空の プロジェクト (.NET Framework) テンプレートを選択し、[ 次へ] を選択します。
プロジェクトに QuickDate という名前を付け、[ 作成] を選択します。
ソリューション エクスプローラーのソリューションの下に QuickDate という名前のプロジェクトが表示されます。 現在、 App.configという名前の 1 つのファイルが含まれています。
注
空のプロジェクト (.NET Framework) テンプレートが表示されない場合は、.NET デスクトップ開発 Visual Studio ワークロードをインストールする必要があります。 Visual Studio では、ワークロードベースのインストールを使用して、実行する開発の種類に必要なコンポーネントのみをインストールします。
新しいプロジェクトを作成するときに新しいワークロードをインストールする簡単な方法は、探しているものが見つからないというテキストの下にある [その他のツールと機能のインストール] リンクを選択することです。 Visual Studio インストーラーが起動したら、 .NET デスクトップ開発 ワークロードを選択し、[ 変更 ] ボタンを選択します。
ソリューション エクスプローラーで、ソリューションの [QuickSolution] を右クリックします。 コンテキスト メニューの [ 追加>新しいプロジェクト] を選択します。
[新しいプロジェクトの追加] ページで、上部にある検索ボックスに「空」と入力し、[すべての言語] で [C#] を選択します。
C# 空のプロジェクト (.NET Framework) テンプレートを選択し、[ 次へ] を選択します。
注
Visual Studio では、ワークロードベースのインストールを使用して、実行する開発の種類に必要なコンポーネントのみをインストールします。 空のプロジェクト (.NET Framework) テンプレートが表示されない場合は、.NET デスクトップ開発 Visual Studio ワークロードをインストールします。
新しいプロジェクトを作成するときに新しいワークロードをインストールする簡単な方法は、探しているものが見つからないというテキストの下にある [その他のツールと機能のインストール] リンクを選択することです。 Visual Studio インストーラーで、 .NET デスクトップ開発 ワークロードを選択し、[ 変更] を選択します。
[ 新しいプロジェクトの構成] ページで、プロジェクト に QuickDate という名前を付け、[ 作成] を選択します。
ソリューション エクスプローラーのソリューションの下に QuickDate プロジェクトが表示されます。 プロジェクトには、 参照 ノードと 、App.configという名前の 1 つのファイルが含まれています。
プロジェクトに項目を追加する
空のプロジェクトにコード ファイルを追加します。
ソリューション エクスプローラーで、QuickDate プロジェクトを右クリックします。 コンテキスト メニューの [追加] >[新しいアイテム] を選択します。
新しい項目の追加 ダイアログ ボックスが開きます。 ダイアログがコンパクト ビューで開いた場合 は、[すべてのテンプレートを表示 ] を選択します。
[Visual C# 項目] を展開し、[コード] を選択します。 中央のウィンドウで、 クラス 項目テンプレートを選択します。 [ 名前] に「 カレンダー」と入力し、[ 追加] を選択します。
Visual Studio によって、 Calendar.cs という名前のファイルがプロジェクトに追加されます。 最後の
.csは、C# コード ファイルのファイル拡張子です。 Calendar.cs ファイルがソリューション エクスプローラーのビジュアル プロジェクト階層に表示され、ファイルがエディターで開きます。Calendar.cs ファイルの内容を次のコードに置き換えます。
using System; namespace QuickDate { internal class Calendar { static void Main(string[] args) { DateTime now = GetCurrentDate(); Console.WriteLine($"Today's date is {now}"); Console.ReadLine(); } internal static DateTime GetCurrentDate() { return DateTime.Now.Date; } } }コードが実行しているすべてを理解する必要はありません。 + F5 キーを押してアプリを実行します。 アプリは、今日の日付を コンソールまたは標準出力ウィンドウに出力します。 次に、コンソール ウィンドウを閉じます。
2 つ目のプロジェクトを追加する
通常、ソリューションには複数のプロジェクトが含まれており、これらのプロジェクトは相互に参照することがよくあります。 ソリューション内の一部のプロジェクトはクラス ライブラリ、一部は実行可能アプリケーション、一部は単体テスト プロジェクトまたは Web サイトです。
単体テスト プロジェクトをソリューションに追加するには、プロジェクト テンプレートから開始して、別のコード ファイルをプロジェクトに追加する必要がないようにします。
ソリューション エクスプローラーで、ソリューションの [QuickSolution] を右クリックします。 コンテキスト メニューの [追加] >[新しいプロジェクト] を選択します。
[新しいプロジェクトの追加] ダイアログ ボックスで、上部にある検索ボックスにテキスト単体テストを入力し、[言語] で [C#] を選択します。
.NET Core 用の 単体テスト プロジェクト プロジェクト テンプレートを選択し、[ 次へ] を選択します。
注
Visual Studio 2019 バージョン 16.9 以降では、MSTest プロジェクト テンプレート名が MSTest 単体テスト プロジェクト (.NET Core) から 単体テスト プロジェクトに変更されました。 この更新プログラムでは、プロジェクト作成のいくつかの手順が変更されました。
プロジェクトに QuickTest という名前を付け、[ 次へ] を選択します。
推奨されるターゲット フレームワーク (.NET Core 3.1) または .NET 5 を選択し、[ 作成] を選択します。
ソリューション エクスプローラーに 2 つ目のプロジェクトが追加され、UnitTest1.csという名前のファイルがエディターで開きます。
ソリューション エクスプローラーで、ソリューションの [QuickSolution] を右クリックします。 コンテキスト メニューの [追加] >[新しいプロジェクト] を選択します。
[新しいプロジェクトの追加] ダイアログ ボックスで、上部にある検索ボックスに単体テストを入力し、[すべての言語] で [C#] を選択します。
C# 単体テスト プロジェクト (.NET Framework) プロジェクト テンプレートを選択し、[ 次へ] を選択します。
[ 新しいプロジェクトの構成] ページで、プロジェクト に QuickTest という名前を付け、[ 作成] を選択します。
Visual Studio によってソリューション エクスプローラーに QuickTest プロジェクトが追加され、UnitTest1.cs ファイルがエディターで開きます。
プロジェクト参照を追加する
新しい単体テスト プロジェクトを使用して QuickDate プロジェクトでメソッドをテストするには、 QuickDate への参照を QuickTest プロジェクトに追加する必要があります。 参照を追加すると、2 つのプロジェクト間に ビルドの依存関係 が作成されます。 ソリューションをビルドすると、 QuickDate は QuickTest の前にビルドされます。
QuickTest プロジェクトの [依存関係] ノードを右クリックします。 コンテキスト メニューの [ プロジェクト参照の追加] を選択します。
[ 参照マネージャー ] ダイアログ ボックスが開きます。
左側のウィンドウで、[ プロジェクト] を展開し、[ ソリューション] を選択します。 中央のウィンドウで、 QuickDate の横にあるチェック ボックスをオンにし、[ OK] を選択します。
QuickDate プロジェクトへの参照が追加されます。
ソリューション エクスプローラーで、QuickTest プロジェクトの [参照] ノードを右クリックします。 コンテキスト メニューから、[参照の追加] を選択します。
[ 参照マネージャー ] ダイアログ ボックスで、[ プロジェクト] を選択します。 中央のウィンドウで、 QuickDate の横にあるチェック ボックスをオンにし、[ OK] を選択します。
ソリューション エクスプローラーの QuickTest プロジェクトの下に、QuickDate プロジェクトへの参照が表示されます。
テスト コードを追加する
次に、C# テスト コード ファイルにテスト コードを追加します。 UnitTest1.csの内容を次のコードに置き換えます。
using System; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace QuickTest { [TestClass] public class UnitTest1 { [TestMethod] public void TestGetCurrentDate() { Assert.AreEqual(DateTime.Now.Date, QuickDate.Calendar.GetCurrentDate()); } } }コードの一部の下に赤い波線が表示されます。 このエラーを修正するには、テスト プロジェクトを QuickDate プロジェクトのフレンド アセンブリにします。
Calendar.cs ファイルで、次の using ステートメントと InternalsVisibleToAttribute 属性をファイルの先頭に追加して、テスト プロジェクトのエラーを解決します。
using System.Runtime.CompilerServices; [assembly: InternalsVisibleTo("QuickTest")]Calendar.csコードは、次のスクリーンショットのようになります。
単体テストを実行する
単体テストが動作していることを確認するには、メニュー バーから [テスト]、[>を選択します。 [テスト エクスプローラー] ウィンドウが開き、TestGetCurrentDate テストに合格することがわかります。
ヒント
メニュー バーから [テスト] [>] を選択して、テスト エクスプローラーを開くこともできます。
プロジェクトのプロパティ
属性を含むInternalsVisibleToAttribute ファイル内の行は、QuickTest プロジェクトのアセンブリ名またはファイル名を参照します。 アセンブリ名は、必ずしもプロジェクト名と同じであるとは限りません。 プロジェクトのアセンブリ名を検索するには、プロジェクトのプロパティを使用します。 プロパティ ページには、プロジェクトのさまざまな設定が含まれています。
ソリューション エクスプローラーで、QuickTest プロジェクトを右クリックし、[プロパティ] を選択するか、プロジェクトを選択して Alt キーを押+Enter キーを押します。
プロジェクトの プロパティ ページ が [ アプリケーション ] タブに表示されます。QuickTest プロジェクトの アセンブリ名 は、実際には QuickTest です。
必要に応じて、ここで名前を変更できます。 テスト プロジェクトをビルドすると、結果のバイナリ ファイルの名前が QuickTest.dll から <NewName>.dllに変更されます。
プロジェクトのプロパティ ページには、ビルドやデバッグなどのタブがありますので、他のタブも探索してみてください。 これらのタブは、プロジェクトの種類によって異なります。