プロジェクトとソリューションの概要
このチュートリアルでは、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名前を付け、 [ の作成] を選択します。QuickSolution ソリューションは、Visual Studio ウィンドウの右側 ソリューション エクスプローラー に表示されます。 ソリューション エクスプローラー を使用して、プロジェクトの内容を参照することがよくあります。
次に、最初のプロジェクトをソリューションに追加します。 空のプロジェクトから始めて、必要な項目を追加します。
ソリューション エクスプローラーでソリューション '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# アイテムを展開し、コードを選択します。 中央のウィンドウで、クラス 項目テンプレートを選択します。 [名前] で、「Calendar」と入力し、[追加] を選択します。
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; } } }
コードが実行しているすべてを理解する必要はありません。 Ctrl
F5 キー押して、アプリを実行します。 アプリは、現在の日付を コンソール(標準出力) ウィンドウに出力します。 次に、コンソール ウィンドウを閉じます。
通常、ソリューションには複数のプロジェクトが含まれており、これらのプロジェクトは相互に参照することがよくあります。 ソリューション内の一部のプロジェクトはクラス ライブラリ、一部は実行可能アプリケーション、一部は単体テスト プロジェクトまたは 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 ファイルが開きます。
新しい単体テスト プロジェクトを使用して、
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 コードは、次のスクリーンショットのようになります。
単体テストが動作していることを確認するには、メニュー バーの [テスト]
ヒント
[テスト エクスプローラー] は、メニュー バーで [テスト]>[テスト エクスプローラー] を選択して開くこともできます。
InternalsVisibleToAttribute 属性を含む Calendar.cs ファイル内の行は、QuickTest プロジェクトのアセンブリ名またはファイル名を参照します。 アセンブリ名は、必ずしもプロジェクト名と同じであるとは限りません。 プロジェクトのアセンブリ名を検索するには、プロジェクトのプロパティを使用します。 プロパティ ページには、プロジェクトのさまざまな設定が含まれています。
ソリューション エクスプローラー
で、 QuickTest プロジェクトを右クリックし、[プロパティ]選択するか、プロジェクトを選択して Alt キー 押 Enter キーを押します。プロジェクトの
プロパティ ページ 、[アプリケーション ] タブが開きます。QuickTest プロジェクトのアセンブリ名 は、実際には QuickTestです。 必要に応じて、ここで名前を変更できます。 テスト プロジェクトをビルドすると、結果のバイナリ ファイルの名前が QuickTest.dll から <NewName>.dllに変更されます。
プロジェクトのプロパティ ページのその他のタブ (Build、Debugなど) を確認します。 これらのタブは、プロジェクトの種類によって異なります。
- Visual Studio のプロジェクトとソリューションを作成、操作、削除
- プロジェクトやソリューションを せずに Visual Studio でコードを開発する
- プロジェクトとソリューションのプロパティの管理
- プロジェクト の参照を管理する