Visual Basic を使用するプロジェクトとソリューションについて理解する
この入門記事では、Visual Studio でソリューションとプロジェクトを作成することの意味について説明します。 ソリューションは、1 つまたは複数の関連するコード プロジェクトを整理するために使われるコンテナーです。たとえば、クラス ライブラリ プロジェクトとそれに対応するテスト プロジェクトなどです。 プロジェクトのプロパティと、プロジェクトに含めることができるファイルのいくつかを紹介します。 また、あるプロジェクトから別のプロジェクトへの参照も作成します。
ヒント
Visual Studio をまだインストールしていない場合は、Visual Studio のダウンロード ページに移動し、無料試用版をインストールしてください。
プロジェクトの概念を学習して理解するための演習として、ソリューションとプロジェクトをゼロから構築します。 Visual Studio の一般的な使い方として、新しいプロジェクトを作成するときに、Visual Studio で用意されているさまざまなプロジェクト "テンプレート" を使うことがよくあります。
注意
Visual Studio でアプリを開発するにあたり、ソリューションとプロジェクトは必須ではありません。 また、コードが含まれているフォルダーを開いて、コードの作成、ビルド、およびデバッグを開始することもできます。 たとえば、GitHub リポジトリを複製しても、それには Visual Studio のプロジェクトとソリューションが含まれていない場合があります。 詳細については、「プロジェクトまたはソリューションを使用せずに Visual Studio でコードを開発する」を参照してください。
ソリューションとプロジェクト
ソリューションは、その名前にもかかわらず、"答え" ではありません。 ソリューションは、Visual Studio で 1 つまたは複数の関連プロジェクトを整理するために使用される単なるコンテナーです。 Visual Studio でソリューションを開くと、ソリューションに含まれているすべてのプロジェクトが自動的に読み込まれます。
ソリューションを作成する
空のソリューションを作成するところから説明を始めます。 Visual Studio に慣れてきても、空のソリューションが頻繁に作成されることには、ほとんど気づかないでしょう。 Visual Studio で新しいプロジェクトを作成するとき、ソリューションがまだ開いていなければ、プロジェクトを格納するためのソリューションが自動的に作成されます。
Visual Studio を開きます。
スタート ウィンドウで、 [新しいプロジェクトの作成] を選択します。
[新しいプロジェクトの作成] ページで、検索ボックスに「空のソリューション」と入力し、 [空のソリューション] テンプレートを選択して、 [次へ] を選択します。
ソリューションに QuickSolution という名前を設定して、 [作成] を選択します。
Visual Studio ウィンドウの右側にあるソリューション エクスプローラーにソリューションが表示されます。 多くの場合、ソリューション エクスプローラーを使用して、プロジェクトの内容を参照することになります。
Visual Studio を開きます。
スタート ウィンドウで、 [新しいプロジェクトの作成] を選択します。
[新しいプロジェクトの作成] ページで、検索ボックスに「空のソリューション」と入力し、 [空のソリューション] テンプレートを選択して、 [次へ] を選択します。
ソリューションに QuickSolution という名前を設定して、 [作成] を選択します。
Visual Studio ウィンドウの右側にあるソリューション エクスプローラーにソリューションが表示されます。 多くの場合、ソリューション エクスプローラーを使用して、プロジェクトの内容を参照することになります。
プロジェクトを追加する
次に、最初のプロジェクトをソリューションに追加してみましょう。 空のプロジェクトから始めて、そのプロジェクトに必要なアイテムを追加します。
ソリューション エクスプローラーでソリューション "QuickSolution" の右クリックまたはコンテキスト メニューから、[追加]>[新しいプロジェクト] を選択します。
[新しいプロジェクトの追加] ダイアログ ボックスが開きます。
上部の検索ボックスに「empty」というテキストを入力し、[言語] で [Visual Basic] を選択します。
[空のプロジェクト (.NET Framework)] テンプレートを選択し、 [次へ] を選択します。
プロジェクトに「QuickDate」という名前を付けて、 [作成] を選択します。
ソリューション エクスプローラーで、ソリューションの下に QuickDate という名前のプロジェクトが表示されます。 現在のところ、このプロジェクトには App.config と呼ばれるファイルが 1 つ含まれています。
注意
[空のプロジェクト (.NET Framework)] テンプレートが表示されない場合は、.NET デスクトップ開発 Visual Studio "ワークロード" をインストールする必要があります。 Visual Studio は、ワークロード ベースのインストールを使って、行われる開発の種類に必要なコンポーネントだけをインストールします。 新しいプロジェクトを作成するときに新しいワークロードをインストールする簡単な方法は、 [探しているものが見つからない場合] というテキストの下にある [さらにツールと機能をインストールする] リンクを選択することです。 Visual Studio インストーラーが起動した後、 [.NET デスクトップ開発] ワークロードを選択して、 [変更] ボタンを選択します。
ソリューション エクスプローラーでソリューション "QuickSolution" の右クリックまたはコンテキスト メニューから、[追加]>[新しいプロジェクト] を選択します。
[新しいプロジェクトの追加] ダイアログ ボックスが開きます。
上部にある検索ボックスに「empty」というテキストを入力してから、 [すべての言語] ドロップダウン リストで [Visual Basic] を選択します。
[空のプロジェクト (.NET Framework)] テンプレートを選択し、 [次へ] を選択します。
プロジェクトに「QuickDate」という名前を付けて、 [作成] を選択します。
ソリューション エクスプローラーで、ソリューションの下に QuickDate という名前のプロジェクトが表示されます。 現在のところ、このプロジェクトには App.config と呼ばれるファイルが 1 つ含まれています。
注意
[空のプロジェクト (.NET Framework)] テンプレートが表示されない場合は、.NET デスクトップ開発 Visual Studio "ワークロード" をインストールする必要があります。 Visual Studio は、ワークロード ベースのインストールを使って、行われる開発の種類に必要なコンポーネントだけをインストールします。 新しいプロジェクトを作成するときに新しいワークロードをインストールする簡単な方法は、 [探しているものが見つからない場合] というテキストの下にある [さらにツールと機能をインストールする] リンクを選択することです。 Visual Studio インストーラーが起動した後、 [.NET デスクトップ開発] ワークロードを選択して、 [変更] ボタンを選択します。
プロジェクトにアイテムを追加する
空のプロジェクトを用意しました。 コード ファイルを追加しましょう。
ソリューション エクスプローラーで QuickDate プロジェクトの右クリック メニューまたはコンテキスト メニューから、 [追加]>[新しい項目] を選択します。
[新しい項目の追加] ダイアログ ボックスが開きます。
[共通項目] を展開し、[コード] を選択します。 中央のペインで、 [クラス] 項目テンプレートを選択します。 クラスに「Calendar」という名前を付け、 [追加] ボタンを選択します。
Calendar.vb という名前のファイルがプロジェクトに追加されます。 末尾の .vb は、Visual Basic コード ファイルに付けられるファイル拡張子です。 ソリューション エクスプローラーのビジュアル プロジェクト階層にファイルが表示され、その内容がエディターで開かれます。
Calendar.vb ファイルの内容を次のコードに置き換えます。
Class Calendar Public Shared Function GetCurrentDate() As Date Return DateTime.Now.Date End Function End Class
Calendar
クラスには、現在の日付を返す、GetCurrentDate
という 1 つの関数が含まれます。ソリューション エクスプローラーで [My Project] をダブルクリックして、プロジェクトのプロパティを開きます。 [アプリケーション] タブで、[アプリケーションの種類] を [クラス ライブラリ] に変更します。 この手順は、プロジェクトを正常にビルドするために必要です。
ソリューション エクスプローラーで [QuickDate] を右クリックし、[ビルド] を選択してプロジェクトをビルドします。 [出力] ウィンドウには、ビルドが成功したことを示すメッセージが表示されるはずです。
2 つ目のプロジェクトを追加する
ソリューションには複数のプロジェクトが含まれているのが一般的です。これらのプロジェクトは多くの場合、互いに参照しています。 ソリューション内に含めるプロジェクトはクラス ライブラリ、実行可能なアプリケーション、および単体テスト プロジェクトまたは Web サイトとすることができます。
単体テスト プロジェクトをソリューションに追加してみましょう。 今度はプロジェクト テンプレートから開始します。これにより、プロジェクトに追加のコード ファイルを追加する必要がなくなります。
- ソリューション エクスプローラーでソリューション "QuickSolution" の右クリックまたはコンテキスト メニューから、[追加]>[新しいプロジェクト] を選択します。
[新しいプロジェクトの追加] ダイアログ ボックスで、上部にある検索ボックスに「unit test」というテキストを入力し、[言語] で [Visual Basic] を選択します。
[単体テスト プロジェクト (.NET Framework)] プロジェクト テンプレートを選択してから、[次へ] を選択します。
プロジェクトに「QuickTest」という名前を付けて、[作成] を選択します。
2 つ目のプロジェクトがソリューション エクスプローラーに追加され、UnitTest1.vb という名前のファイルがエディターで開きます。
[新しいプロジェクトの追加] ダイアログ ボックスで、上部にある検索ボックスに「unit test」というテキストを入力してから、 [すべての言語] ドロップダウン リストで [Visual Basic] を選択します。
[単体テスト プロジェクト (.NET Framework)] プロジェクト テンプレートを選択してから、[次へ] を選択します。
プロジェクトに「QuickTest」という名前を付けて、[作成] を選択します。
2 つ目のプロジェクトがソリューション エクスプローラーに追加され、UnitTest1.vb という名前のファイルがエディターで開きます。
プロジェクト参照を追加する
これから、新しい単体テスト プロジェクトを使用して QuickDate プロジェクト内のメソッドをテストします。それには、そのプロジェクトへの参照を追加する必要があります。 この参照によって、2 つのプロジェクトの間に "ビルドの依存関係" が作成されます。つまり、ソリューションをビルドすると、QuickDate がビルドされてから、QuickTest がビルドされます。
QuickTest プロジェクトで [参照] ノードを選択し、右クリックまたはコンテキスト メニューから、[参照の追加] を選択します。
[参照マネージャー] ダイアログ ボックスが表示されます。
左側のウィンドウで、[プロジェクト] を展開し、[ソリューション] を選択します。 中央のウィンドウで、QuickDate の横にあるチェック ボックスを選択し、[OK] ボタンを選択します。
QuickDate プロジェクトへの参照が追加されます。
QuickTest プロジェクトで [参照] ノードを選択し、右クリックまたはコンテキスト メニューから、[参照の追加] を選択します。
[参照マネージャー] ダイアログ ボックスが表示されます。
左側のウィンドウで、[プロジェクト] を展開し、[ソリューション] を選択します。 中央のウィンドウで、QuickDate の横にあるチェック ボックスを選択し、[OK] ボタンを選択します。
QuickDate プロジェクトへの参照が追加されます。
テスト コードを追加する
ここで、Visual Basic コード ファイルにテスト コードを追加します。 UnitTest1.vb の内容を次のコードに置き換えます。
<TestClass()> Public Class UnitTest1 <TestMethod()> Public Sub TestGetCurrentDate() Assert.AreEqual(Date.Now.Date, QuickDate.Calendar.GetCurrentDate()) End Sub End Class
コードの一部分の下に赤色の波線が表示されます。 テスト プロジェクトを、QuickDate プロジェクトに対するフレンド アセンブリにすることで、このエラーを修正します。
QuickDate プロジェクトに戻り、Calendar.vb ファイルをまだ開いていない場合は開きます。さらに、次の Imports ステートメントと InternalsVisibleToAttribute 属性を追加して、テスト プロジェクトのエラーを解決します。
Imports System.Runtime.CompilerServices <Assembly: InternalsVisibleTo("QuickTest")>
コード ファイルは、次のようになります。
ここで、Visual Basic コード ファイルにテスト コードを追加します。 UnitTest1.vb の内容を次のコードに置き換えます。
<TestClass()> Public Class UnitTest1 <TestMethod()> Public Sub TestGetCurrentDate() Assert.AreEqual(Date.Now.Date, QuickDate.Calendar.GetCurrentDate()) End Sub End Class
コードの一部分の下に赤色の波線が表示されます。 テスト プロジェクトを、QuickDate プロジェクトに対するフレンド アセンブリにすることで、このエラーを修正します。
QuickDate プロジェクトに戻り、Calendar.vb ファイルをまだ開いていない場合は開きます。さらに、次の Imports ステートメントと InternalsVisibleToAttribute 属性を追加して、テスト プロジェクトのエラーを解決します。
Imports System.Runtime.CompilerServices <Assembly: InternalsVisibleTo("QuickTest")>
コード ファイルは、次のようになります。
プロジェクトのプロパティ
InternalsVisibleToAttribute 属性を含む Calendar.vb ファイル内の行では、QuickTest プロジェクトのアセンブリ名 (ファイル名) を参照します。 アセンブリ名はプロジェクト名と常に同じであるとは限りません。 プロジェクトのアセンブリ名を検索するには、プロジェクトのプロパティを開きます。
ソリューション エクスプローラーで QuickTest プロジェクトを選択します。 右クリックまたはコンテキスト メニューから、[プロパティ] を選択するか、またはAlt+Enter キーを押します。 (ソリューション エクスプローラーで [My Project] をダブルクリックすることもできます)。
[アプリケーション] タブで、プロジェクトの "プロパティ ページ" が開きます。プロパティ ページには、プロジェクトのさまざまな設定が含まれます。 QuickTest プロジェクトのアセンブリ名が "QuickTest" であることに注目してください。 アセンブリ名を変更する場合は、ここでそれを行います。 テスト プロジェクトをビルドすると、結果として得られるバイナリ ファイルの名前は QuickTest.dll から、選択した任意の名前に変わります。
[コンパイル] や [設定] など、プロジェクトのプロパティ ページの他のいくつかのタブを紹介します。 これらのタブは、プロジェクトの種類によって異なります。
InternalsVisibleToAttribute 属性が含まれている Calendar.vb ファイル内の行では、QuickTest プロジェクトのアセンブリ名 (ファイル名) を参照します。 アセンブリ名はプロジェクト名と常に同じであるとは限りません。 プロジェクトのアセンブリ名を検索するには、プロジェクトのプロパティを開きます。
ソリューション エクスプローラーで QuickTest プロジェクトを選択します。 右クリックまたはコンテキスト メニューから、[プロパティ] を選択するか、またはAlt+Enter キーを押します。 (ソリューション エクスプローラーで [My Project] をダブルクリックすることもできます)。
[アプリケーション] タブで、プロジェクトの "プロパティ ページ" が開きます。プロパティ ページには、プロジェクトのさまざまな設定が含まれます。 QuickTest プロジェクトのアセンブリ名が "QuickTest" であることに注目してください。 アセンブリ名を変更する場合は、ここでそれを行います。 テスト プロジェクトをビルドすると、結果として得られるバイナリ ファイルの名前は QuickTest.dll から、選択した任意の名前に変わります。
[コンパイル] や [設定] など、プロジェクトのプロパティ ページの他のいくつかのタブを紹介します。 これらのタブは、プロジェクトの種類によって異なります。
(省略可能) テストを実行する
単体テストが動作していることを確認する場合は、メニュー バーから [テスト]>[実行]>[すべてのテスト] を選択します。 テスト エクスプローラーと呼ばれるウィンドウが開くので、TestGetCurrentDate テストが成功しているか確認する必要があります。
ヒント
テスト エクスプローラーが自動的に開かない場合は、メニュー バーから [テスト]>[Windows]>[テスト エクスプローラー] を選択して開きます。
単体テストが動作していることを確認する場合は、メニュー バーから [テスト]>[すべてのテストを実行する] の順に選択します。 テスト エクスプローラーと呼ばれるウィンドウが開くので、TestGetCurrentDate テストが成功しているか確認する必要があります。
ヒント
テスト エクスプローラーが自動的に開かない場合は、メニュー バーから [テスト]>[Windows]>[テスト エクスプローラー] を選択して開きます。
次のステップ
Visual Studio についてさらに詳しく調べる場合は、次のいずれかの Visual Basic のチュートリアルに従って、アプリの作成を検討してください。