プロジェクトとソリューションの概要Introduction to projects and solutions

この入門記事では、Visual Studio で ソリューションプロジェクト を作成することの意味について説明します。In this introductory article, we'll explore what it means to create a solution and a project in Visual Studio. ソリューションは、1 つまたは複数の関連するコード プロジェクトを整理するために使われるコンテナーです。たとえば、クラス ライブラリ プロジェクトとそれに対応するテスト プロジェクトなどです。A solution is a container that's used to organize one or more related code projects, for example a class library project and a corresponding test project. プロジェクトのプロパティと、プロジェクトに含めることができるファイルのいくつかを紹介します。We'll look at the properties of a project and some of the files it can contain. また、あるプロジェクトから別のプロジェクトへの参照も作成します。We'll also create a reference from one project to another.

Visual Studio をまだインストールしていない場合は、Visual Studio のダウンロード ページに移動し、無料試用版をインストールしてください。If you haven't already installed Visual Studio, go to the Visual Studio downloads page to install it for free.

Visual Studio をまだインストールしていない場合は、Visual Studio のダウンロード ページに移動し、無料試用版をインストールしてください。If you haven't already installed Visual Studio, go to the Visual Studio downloads page to install it for free.

プロジェクトの概念を学習して理解するための演習として、ソリューションとプロジェクトをゼロから構築します。We'll construct a solution and project from scratch as an educational exercise to understand the concept of a project. Visual Studio の一般的な使い方として、新しいプロジェクトを作成するときに、Visual Studio で用意されているさまざまなプロジェクト "テンプレート" を使うことがよくあります。In your general use of Visual Studio, you'll likely use some of the various project templates that Visual Studio offers when you create a new project.

注意

Visual Studio でアプリを開発するにあたり、ソリューションとプロジェクトは必須ではありません。Solutions and projects aren't required to develop apps in Visual Studio. また、コードが含まれているフォルダーを開いて、コードの作成、ビルド、およびデバッグを開始することもできます。You can also just open a folder that contains code and start coding, building, and debugging. たとえば、GitHub リポジトリを複製しても、それには Visual Studio のプロジェクトとソリューションが含まれていない場合があります。For example, if you clone a GitHub repo, it might not contain Visual Studio projects and solutions. 詳細については、「プロジェクトまたはソリューションを使用せずに Visual Studio でコードを開発する」を参照してください。For more information, see Develop code in Visual Studio without projects or solutions.

ソリューションとプロジェクトSolutions and projects

ソリューションは、その名前にもかかわらず、"答え" ではありません。Despite its name, a solution is not an "answer". ソリューションは、Visual Studio で 1 つまたは複数の関連プロジェクトを整理するために使用される単なるコンテナーです。A solution is simply a container used by Visual Studio to organize one or more related projects. Visual Studio でソリューションを開くと、ソリューションに含まれているすべてのプロジェクトが自動的に読み込まれます。When you open a solution in Visual Studio, it automatically loads all the projects that the solution contains.

ソリューションを作成するCreate a solution

空のソリューションを作成するところから説明を始めます。We'll start our exploration by creating an empty solution. Visual Studio に慣れてきても、自分が空のソリューションを頻繁に作成していることにはほとんど気づかないでしょう。After you get to know Visual Studio, you probably won't find yourself creating empty solutions very often. Visual Studio で新しいプロジェクトを作成するとき、ソリューションがまだ開いていなければ、プロジェクトを格納するためのソリューションが自動的に作成されます。When you create a new project, Visual Studio automatically creates a solution to house the project if there's not a solution already open.

  1. Visual Studio を開きます。Open Visual Studio.

  2. 上部のメニュー バーで、 [ファイル] > [新規作成] > [プロジェクト] の順に選択します。On the top menu bar, select File > New > Project.

    [新しいプロジェクト] ダイアログ ボックスが表示されます。The New Project dialog box opens.

  3. 左側のウィンドウで、 [その他のプロジェクトの種類] を展開して、 [Visual Studio ソリューション] を選択します。In the left pane, expand Other Project Types, then select Visual Studio Solutions. 中央のウィンドウで、 [空のソリューション] テンプレートを選択します。In the center pane, select the Blank Solution template. ソリューションに「QuickSolution」という名前を付けて、 [OK] ボタンを選択します。Name your solution QuickSolution, then select the OK button.

    Visual Studio 2017 での空のソリューション テンプレートBlank Solution template in Visual Studio 2017

    [スタート ページ] が閉じて、Visual Studio ウィンドウの右側にある ソリューション エクスプローラー にソリューションが表示されます。The Start Page closes, and a solution appears in Solution Explorer on the right-hand side of the Visual Studio window. 多くの場合、ソリューション エクスプローラー を使用して、プロジェクトの内容を参照することになります。You'll probably use Solution Explorer often, to browse the contents of your projects.

  1. Visual Studio を開きます。Open Visual Studio.

  2. [スタート ウィンドウ] で、 [新しいプロジェクトの作成] を選択します。On the start window, select Create a new project.

  3. [新しいプロジェクトの作成] ページで、検索ボックスに「空のソリューション」と入力し、 [空のソリューション] テンプレートを選択して、 [次へ] を選択します。On the Create a new project page, enter blank solution into the search box, select the Blank Solution template, and then select Next.

    Visual Studio 2019 での空のソリューション テンプレートBlank Solution template in Visual Studio 2019

    ヒント

    複数のワークロードがインストールされている場合、 [空のソリューション] テンプレートは、検索結果の一覧の先頭に表示されないことがあります。If you have several workloads installed, the Blank Solution template might not appear at the top of your list of search results. 一覧の [検索に基づく他の結果] セクションまでスクロールしてみてください。Try scrolling to the Other results based on your search section of the list. そこに表示されているはずです。It should appear there.

  4. ソリューションに 「QuickSolution」 という名前を付けて、 [作成] を選択します。Name the solution QuickSolution, and then select Create.

    Visual Studio ウィンドウの右側にある ソリューション エクスプローラー にソリューションが表示されます。A solution appears in Solution Explorer on the right-hand side of the Visual Studio window. 多くの場合、ソリューション エクスプローラー を使用して、プロジェクトの内容を参照することになります。You'll probably use Solution Explorer often, to browse the contents of your projects.

プロジェクトを追加するAdd a project

次に、最初のプロジェクトをソリューションに追加してみましょう。Now let's add our first project to the solution. 空のプロジェクトから始めて、そのプロジェクトに必要なアイテムを追加します。We'll start with an empty project and add the items we need to the project.

  1. ソリューション エクスプローラーソリューション "QuickSolution" の右クリックまたはコンテキスト メニューから、 [追加] > [新しいプロジェクト] の順に選択します。From the right-click or context menu of Solution 'QuickSolution' in Solution Explorer, select Add > New Project.

    [新しいプロジェクトの追加] ダイアログ ボックスが表示されます。The Add New Project dialog box opens.

  2. 左側のウィンドウで、 [Visual C#] を展開し、 [Windows デスクトップ] を選択します。In the left pane, expand Visual C# and select Windows Desktop. 次に、中央のウィンドウで、 [空のプロジェクト (.NET Framework)] テンプレートを選択します。Then, in the middle pane, select the Empty Project (.NET Framework) template. プロジェクトに「QuickDate」という名前を付けて、 [OK] を選択します。Name the project QuickDate, then select OK.

    ソリューション エクスプローラー で、ソリューションの下に QuickDate という名前のプロジェクトが表示されます。A project named QuickDate appears beneath the solution in Solution Explorer. 現在のところ、このプロジェクトには App.config と呼ばれるファイルが 1 つ含まれています。Currently it contains a single file called App.config.

    注意

    ダイアログ ボックスの左側のウィンドウに Visual C# が表示されない場合は、 .NET デスクトップ開発 Visual Studio ワークロードをインストールする必要があります。If you don't see Visual C# in the left pane of the dialog box, you must install the .NET desktop development Visual Studio workload. Visual Studio は、ワークロード ベースのインストールを使って、行われる開発の種類に必要なコンポーネントだけをインストールします。Visual Studio uses workload-based installation to install only the components you need for the type of development you do. 新しいワークロードをインストールする簡単な方法は、 [新しいプロジェクトの追加] ダイアログ ボックスの左下隅にある [Visual Studio インストーラーを開く] リンクをクリックすることです。An easy way to install a new workload is to select the Open Visual Studio Installer link in the bottom left corner of the Add New Project dialog box. Visual Studio インストーラーが起動した後、 [.NET デスクトップ開発] ワークロードを選択して、 [変更] ボタンを選択します。After Visual Studio Installer launches, select the .NET desktop development workload and then the Modify button.

    Visual Studio インストーラー リンクを開くOpen Visual Studio Installer link

  1. ソリューション エクスプローラーソリューション "QuickSolution" の右クリックまたはコンテキスト メニューから、 [追加] > [新しいプロジェクト] の順に選択します。From the right-click or context menu of Solution 'QuickSolution' in Solution Explorer, select Add > New Project.

    [新しいプロジェクトの追加] ダイアログ ボックスが開きます。A dialog box opens that says Add a new project.

  2. 上部の検索ボックスに「空の」というテキストを入力し、 言語C# を選択します。Enter the text empty into the search box at the top, and then select C# under Language.

  3. [空のプロジェクト (.NET Framework)] テンプレートを選択して、 [次へ] を選択します。Select the Empty Project (.NET Framework) template, and then select Next.

  4. プロジェクトに「QuickDate」という名前を付けて、 [作成] を選択します。Name the project QuickDate, then select Create.

    ソリューション エクスプローラー で、ソリューションの下に QuickDate という名前のプロジェクトが表示されます。A project named QuickDate appears beneath the solution in Solution Explorer. 現在のところ、このプロジェクトには App.config と呼ばれるファイルが 1 つ含まれています。Currently it contains a single file called App.config.

    注意

    [空のプロジェクト (.NET Framework)] テンプレートが表示されない場合は、 .NET デスクトップ開発 Visual Studio ワークロードをインストールする必要があります。If you don't see the Empty Project (.NET Framework) template, you must install the .NET desktop development Visual Studio workload. Visual Studio は、ワークロード ベースのインストールを使って、行われる開発の種類に必要なコンポーネントだけをインストールします。Visual Studio uses workload-based installation to install only the components you need for the type of development you do.

    新しいプロジェクトを作成するときに新しいワークロードをインストールする簡単な方法は、 [探しているものが見つからない場合] というテキストの下にある [さらにツールと機能をインストールする] リンクを選択することです。An easy way to install a new workload when you're creating a new project is to select the Install more tools and features link under the text that says Not finding what you're looking for?. Visual Studio インストーラーが起動した後、 [.NET デスクトップ開発] ワークロードを選択して、 [変更] ボタンを選択します。After Visual Studio Installer launches, select the .NET desktop development workload and then the Modify button.

    Visual Studio インストーラー リンクを開くOpen Visual Studio Installer link

プロジェクトにアイテムを追加するAdd an item to the project

空のプロジェクトを用意しました。We have an empty project. コード ファイルを追加しましょう。Let's add a code file.

  1. ソリューション エクスプローラーQuickDate プロジェクトの右クリックまたはコンテキスト メニューから、 [追加] > [新しい項目] の順に選択します。From the right-click or context menu of the QuickDate project in Solution Explorer, select Add > New Item.

    [新しい項目の追加] ダイアログ ボックスが開きます。The Add New Item dialog box opens.

  2. [Visual C# アイテム] を展開して、 [コード] を選択します。Expand Visual C# Items, then select Code. 中央のウィンドウで、 [クラス] 項目テンプレートを選択します。In the middle pane, select the Class item template. クラスに「Calendar」という名前を付けて、 [追加] ボタンを選択します。Name the class Calendar, and then select the Add button.

    Calendar.cs という名前のファイルがプロジェクトに追加されます。A file named Calendar.cs is added to the project. 末尾の .cs は、C# コード ファイルに与えられるファイル拡張子です。The .cs on the end is the file extension that is given to C# code files. ソリューション エクスプローラー のビジュアル プロジェクト階層にファイルが表示され、その内容がエディターで開かれます。The file appears in the visual project hierarchy in Solution Explorer, and its contents are opened in the editor.

  3. Calendar.cs ファイルの内容を次のコードに置き換えます。Replace the contents of the Calendar.cs file with the following code:

    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 キーを押してプログラムを実行し、コンソール (または標準出力) ウィンドウに今日の日付が出力されるのを確認することができます。You don't need to understand what the code does, but if you want, you can run the program by pressing Ctrl+F5 and see that it prints today's date to the console (or standard output) window.

2 つ目のプロジェクトを追加するAdd a second project

ソリューションには複数のプロジェクトが含まれているのが一般的です。これらのプロジェクトは多くの場合、互いに参照しています。It is common for solutions to contain more than one project, and often these projects reference each other. ソリューション内に含めるプロジェクトはクラス ライブラリ、実行可能なアプリケーション、および単体テスト プロジェクトまたは Web サイトとすることができます。Some projects in a solution might be class libraries, some executable applications, and some might be unit test projects or websites.

単体テスト プロジェクトをソリューションに追加してみましょう。Let's add a unit test project to our solution. 今度はプロジェクト テンプレートから開始します。これにより、プロジェクトに追加のコード ファイルを追加する必要がなくなります。This time we'll start from a project template so we don't have to add an additional code file to the project.

  1. ソリューション エクスプローラーソリューション "QuickSolution" の右クリックまたはコンテキスト メニューから、 [追加] > [新しいプロジェクト] の順に選択します。From the right-click or context menu of Solution 'QuickSolution' in Solution Explorer, select Add > New Project.
  1. 左側のウィンドウで、 [Visual C#] を展開し、 [テスト] カテゴリを選択します。In the left pane, expand Visual C# and select the Test category. 中央のウィンドウで、 [MSTest テスト プロジェクト (.NET Core)] プロジェクト テンプレートを選択します。In the middle pane, select the MSTest Test Project (.NET Core) project template. プロジェクトに「QuickTest」という名前を付けて、 [OK] を選択します。Name the project QuickTest, and then select OK.

    2 つ目のプロジェクトが ソリューション エクスプローラー に追加され、UnitTest1.cs という名前のファイルがエディターで開きます。A second project is added to Solution Explorer, and a file named UnitTest1.cs opens in the editor.

    2 つのプロジェクトを含む Visual Studio ソリューション エクスプローラーVisual Studio Solution Explorer with two projects

  1. [新しいプロジェクトの追加] ダイアログ ボックスで、上部にある検索ボックスに「単体テスト」というテキストを入力し、[言語][C#] を選択します。In the Add a new project dialog box, enter the text unit test into the search box at the top, and then select C# under Language.

  2. [MSTest テスト プロジェクト (.NET Core)] プロジェクト テンプレートを選択して、 [次へ] を選択します。Select the MSTest Test Project (.NET Core) project template, and then select Next.

  3. プロジェクトに「QuickTest」という名前を付けて、 [作成] を選択します。Name the project QuickTest, and then select Create.

    2 つ目のプロジェクトが ソリューション エクスプローラー に追加され、UnitTest1.cs という名前のファイルがエディターで開きます。A second project is added to Solution Explorer, and a file named UnitTest1.cs opens in the editor.

    2 つのプロジェクトを含む Visual Studio ソリューション エクスプローラーVisual Studio Solution Explorer with two projects

プロジェクト参照を追加するAdd a project reference

これから、新しい単体テスト プロジェクトを使用して QuickDate プロジェクト内のメソッドをテストします。それには、そのプロジェクトへの参照を追加する必要があります。We're going to use the new unit test project to test our method in the QuickDate project, so we need to add a reference to that project. そうすることで、2 つのプロジェクトの間に "ビルドの依存関係" が作成されます。つまり、ソリューションをビルドすると、先に QuickDate がビルドされてから、QuickTest がビルドされます。This creates a build dependency between the two projects, meaning that when you build the solution, QuickDate is built before QuickTest.

  1. QuickTest プロジェクトで [依存関係] ノードを選択し、右クリックまたはコンテキスト メニューから、 [参照の追加] を選択します。Select the Dependencies node in the QuickTest project, and from the right-click or context menu, select Add Reference.

    [参照マネージャー] ダイアログ ボックスが表示されます。The Reference Manager dialog box opens.

  2. 左側のウィンドウで、 [プロジェクト] を展開し、 [ソリューション] を選択します。In the left pane, expand Projects and select Solution. 中央のウィンドウで、QuickDate の横にあるチェック ボックスをオンにして、 [OK] を選択します。In the middle pane, select the checkbox next to QuickDate, and then select OK.

    QuickDate プロジェクトへの参照が追加されます。A reference to the QuickDate project is added.

    Visual Studio でのプロジェクト参照が示されているソリューション エクスプローラーA screenshot of Solution Explorer showing project reference in Visual Studio

  1. QuickTest プロジェクトで [依存関係] ノードを選択し、右クリックまたはコンテキスト メニューから、 [プロジェクト参照の追加] を選択します。Select the Dependencies node in the QuickTest project, and from the right-click or context menu, select Add Project Reference....

    [参照マネージャー] ダイアログ ボックスが表示されます。The Reference Manager dialog box opens.

  2. 左側のウィンドウで、 [プロジェクト] を展開して、 [ソリューション] を選択します。In the left pane, expand Projects, and then select Solution. 中央のウィンドウで、QuickDate の横にあるチェック ボックスをオンにして、 [OK] を選択します。In the middle pane, select the checkbox next to QuickDate, and then select OK.

    QuickDate プロジェクトへの参照が追加されます。A reference to the QuickDate project is added.

    Visual Studio 2019 でのプロジェクト参照が示されているソリューション エクスプローラーのスクリーンショット

テスト コードを追加するAdd test code

  1. ここで、C# テスト コード ファイルにテスト コードを追加します。Now we'll add test code to the C# test code file. UnitTest1.cs の内容を次のコードに置き換えます。Replace the contents of UnitTest1.cs with the following code:

    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());
            }
        }
    }
    

    コードの一部分の下に赤色の波線が表示されます。You'll see a red squiggle under some of the code. テスト プロジェクトを、QuickDate プロジェクトに対する フレンド アセンブリにすることで、このエラーを修正します。We'll fix this error by making the test project a friend assembly to the QuickDate project.

  2. QuickDate プロジェクトに戻り、Calendar.cs ファイルをまだ開いていない場合は開きます。Back in the QuickDate project, open the Calendar.cs file if it's not already open. テスト プロジェクトでのエラーを解決するには、次の using ステートメントInternalsVisibleToAttribute 属性をファイルの先頭に追加します。Add the following using statement and InternalsVisibleToAttribute attribute to the top of the file to resolve the error in the test project.

    using System.Runtime.CompilerServices;
    
    [assembly: InternalsVisibleTo("QuickTest")]
    

    コード ファイルは、次のようになります。The code file should look like this:

    CSharp コードCSharp code

プロジェクトのプロパティProject properties

InternalsVisibleToAttribute 属性を含む Calendar.cs ファイル内の行は、QuickTest プロジェクトのアセンブリ名 (ファイル名) を参照します。The line in the Calendar.cs file that contains the InternalsVisibleToAttribute attribute references the assembly name (file name) of the QuickTest project. アセンブリ名はプロジェクト名と常に同じであるとは限りません。The assembly name might not always be the same as the project name. プロジェクトのアセンブリ名を検索するには、プロジェクトのプロパティを開きます。To find the assembly name of a project, open the project properties.

  1. ソリューション エクスプローラーQuickTest プロジェクトを選択します。In Solution Explorer, select the QuickTest project. 右クリックまたはコンテキスト メニューから、[プロパティ] を選択するか、または Alt+Enter キーを押します。From the right-click or context menu, select Properties, or just press Alt+Enter.

    [アプリケーション] タブで、プロジェクトの "プロパティ ページ" が開きます。プロパティ ページには、プロジェクトのさまざまな設定が含まれます。The property pages for the project open on the Application tab. The property pages contain various settings for the project. QuickTest プロジェクトのアセンブリ名が "QuickTest" であることに注目してください。Notice that the assembly name of the QuickTest project is indeed "QuickTest". これを変更する場合は、ここでその変更を行います。If you wanted to change it, this is where you'd do that. テスト プロジェクトをビルドすると、結果として得られるバイナリ ファイルの名前は QuickTest.dll から、選択した任意の名前に変わります。Then, when you build the test project, the name of the resulting binary file would change from QuickTest.dll to whatever you chose.

    プロジェクトのプロパティProject properties

  2. [ビルド][デバッグ] など、プロジェクトのプロパティ ページの他のいくつかのタブを見てみます。Explore some of the other tabs of the project's property pages, such as Build and Debug. これらのタブは、プロジェクトの種類によって異なります。These tabs are different for different types of projects.

次のステップNext steps

単体テストが動作していることを確認する場合は、メニュー バーから [テスト] > [実行] > [すべてのテスト] を選択します。If you want to check that your unit test is working, choose Test > Run > All Tests from the menu bar. テスト エクスプローラー と呼ばれるウィンドウが開くので、TestGetCurrentDate テストが成功しているか確認する必要があります。A window called Test Explorer opens, and you should see that the TestGetCurrentDate test passes.

単体テストが動作していることを確認する場合は、メニュー バーから [テスト] > [すべてのテストを実行する] の順に選択します。If you want to check that your unit test is working, choose Test > Run All Tests from the menu bar. テスト エクスプローラー と呼ばれるウィンドウが開くので、TestGetCurrentDate テストが成功しているか確認する必要があります。A window called Test Explorer opens, and you should see that the TestGetCurrentDate test passes.

テストに合格したことを示す Visual Studio のテスト エクスプローラーTest Explorer in Visual Studio showing passed test

ヒント

テスト エクスプローラー が自動的に開かない場合は、メニュー バーから [テスト] > [Windows] > [テスト エクスプローラー] を選択して開きます。If Test Explorer doesn't open automatically, open it by choosing Test > Windows > Test Explorer from the menu bar.

ヒント

テスト エクスプローラー が自動的に開かない場合は、メニュー バーから [テスト] > [テスト エクスプローラー] を選択して開きます。If Test Explorer doesn't open automatically, open it by choosing Test > Test Explorer from the menu bar.

関連項目See also