Visual Studio を使った ASP.NET の Web 配置: プロジェクト プロパティ
著者: Tom Dykstra
このチュートリアル シリーズでは、Visual Studio 2012 または Visual Studio 2010 を使用して、ASP.NET Web アプリケーションを Azure App Service Web Apps またはサードパーティのホスティング プロバイダーに配置 (発行) する方法について説明します。 チュートリアル シリーズについては、シリーズの最初のチュートリアルをご覧ください。
概要
一部の配置オプションは、プロジェクト ファイル (.csproj または .vbproj ファイル) に格納されているプロジェクトのプロパティ内で構成されます。 ほとんどの場合、これらの設定は既定値のままで問題ありませんが、必要に応じて、Visual Studio に組み込まれている [プロジェクトのプロパティ] UI を使用してこれらの設定を変更することができます。 このチュートリアルでは、[プロジェクトのプロパティ] の配置設定を確認します。 また、空のフォルダーを配置するためのプレースホルダー ファイルも作成します。
[プロジェクトのプロパティ] ウィンドウで配置設定を構成する
以下のチュートリアルで説明するように、配置時の動作に影響するほとんどの設定は、発行プロファイルに含まれています。 注意すべきいくつかの設定は、[プロジェクトのプロパティ] ウィンドウの [パッケージ化/発行] タブにあります。 これらの設定はビルド構成ごとに指定されます。つまり、リリース ビルドとデバッグ ビルドでそれぞれ異なる設定にすることができます。
ソリューション エクスプローラーで、ContosoUniversity プロジェクトを右クリックし、[プロパティ] を選択した後、[Web のパッケージ化/発行] タブを選択します。
ウィンドウが表示されると、このソリューションで現在アクティブになっているビルド構成の設定が既定で表示されます。 [構成] ボックスに [アクティブ (リリース)] が表示されない場合は、リリース ビルドの構成の設定を表示するため、[リリース] を選択します。 リリース ビルドをテスト環境と運用環境の両方に配置します。
[アクティブ (リリース)] または [リリース] を選択すると、このリリース ビルドの構成を使って配置した場合に有効な値が表示されます。
- [配置する項目] ボックスでは、[このアプリケーションの実行に必要なファイルのみ] が選択されています。 その他のオプションは、[このプロジェクトに含まれるすべてのファイル] または [このプロジェクト フォルダー内のすべてのファイル] です。 既定の選択を変更せずそのままにしておくことで、たとえばソース コード ファイルが配置されることを避けることができます。 SQL Server Compact のバイナリ ファイルを含むフォルダーをプロジェクトに含める必要があったのは、この設定が理由です。 この設定の詳細については、「ASP.NET Web アプリケーション プロジェクト配置の FAQ」の「My Project フォルダーのすべてのファイルが配置されない理由」を参照してください。
- [生成されたデバッグ シンボルを除外する] が選択されています。 このビルド構成を使用する場合は、デバッグは行いません。
- [[SQL のパッケージ化/発行] タブで構成したすべてのデータベースを含める] が選択されています。 Visual Studio がデータベースとファイルを配置するかどうかを指定します。 チェックボックスのラベルでは [SQL のパッケージ化/発行] タブしか言及されていませんが、このチェックボックスをオフにすると発行プロファイル上で構成されているデータベースの配置も無効になります。 これは後で行うので、チェック ボックスはオンのままにする必要があります。 [SQL のパッケージ/発行] タブは、これらのチュートリアルでは使用しない従来のデータベース発行方法に使用されます。
- これらのチュートリアルではワンクリック発行を使用しているため、[Web 配置パッケージの設定] セクションは適用されません。
[構成] ドロップダウン ボックスを [デバッグ] に変更して、デバッグ ビルドの既定の設定を表示します。 これらの値は同じですが、デバッグ ビルドを配置する際にデバッグを行えるように、[生成されたデバッグ シンボルを除外する] がオフになっている点が異なります。
Elmah フォルダーが配置されていることを確認する
前回のチュートリアルで説明したように、Elmah NuGet パッケージは、エラー ログとレポートの機能を提供します。 Contoso University のアプリケーションでは、Elmah は、Elmah という名前のフォルダーにエラーの詳細を格納するよう構成されています。
配置時に特定のファイルまたはフォルダーを除外することは一般的な要件です。また別の例は、ユーザーがファイルをアップロードできるフォルダーです。 開発環境で作成されたログ ファイルやアップロードされたファイルが運用環境に配置されないようにする必要があります。 また、運用環境に更新プログラムを配置する場合は、運用環境に存在するファイルが配置のプロセスによって削除されないようにします。 (配置オプションの設定方法によっては、配置先サイトに存在するファイルが配置時にソース サイトに存在しない場合、Web 配置によって配置先からそのファイルが削除されます。)
このチュートリアルで既に説明したように、[Web のパッケージ化/発行] タブの [配置する項目] オプションは、[このアプリケーションの実行に必要なファイルのみ] に設定されています。 その結果、狙いどおりに、開発中に Elmah によって作成されたログ ファイルは配置されません。 (配置するには、プロジェクトに含めた上で、[ビルド アクション] プロパティを [コンテンツ] に設定する必要があります。詳細については、「ASP.NET Web アプリケーション プロジェクト配置の FAQ」の「My Project フォルダーのすべてのファイルが配置されない理由」を参照してください。) ただし、コピーするファイルが少なくとも 1 つ存在しない限り、Web 配置では配置先サイトにフォルダーは作成されません。 そのため、フォルダーがコピーされるように、プレースホルダーとして .txt ファイルをフォルダーに追加します。
ソリューション エクスプローラーで、Elmah フォルダーを右クリックし、[新しい項目の追加] を選択した後、Placeholder.txt という名前のテキスト ファイルを作成します。 それに、「This is a placeholder file to ensure that the folder gets deployed. (これは、フォルダーが確実に配置されるためのプレースホルダー ファイルです)」というテキストを入力し、ファイルを保存します。 こうするだけで、.txt ファイルの [ビルド アクション] プロパティが既定で [コンテンツ] に設定されるため、このファイルとそれが格納されたフォルダーは Visual Studio によって確実に配置されます。
まとめ
これで、配置のセットアップ タスクがすべて完了しました。 次のチュートリアルでは、Contoso University サイトをテスト環境に配置し、そこでテストを行います。