Visual Studio を使用した ASP.NET Web のデプロイ: コマンド ラインでのデプロイ

著者: Tom Dykstra

スターター プロジェクトのダウンロード

このチュートリアル シリーズでは、Visual Studio 2012 または Visual Studio 2010 を使用して、ASP.NET Web アプリケーションを Azure App Service Web Apps またはサードパーティのホスティング プロバイダーに配置 (発行) する方法について説明します。 このシリーズについては、シリーズの最初のチュートリアルをご覧ください。

概要

このチュートリアルでは、コマンド ラインから Visual Studio Web 発行パイプラインを呼び出す方法について説明します。 これは、デプロイを Visual Studio で手動で行うのではなく、デプロイ プロセスを自動化するシナリオ (一般に、ソース コードのバージョン管理システムを使用します) で便利です。

配置を変更する

現在、[バージョン情報] ページにテンプレート コードが表示されています。

テンプレート コードを含むページについて

これを、学生の登録の概要を表示するコードに置き換えます。

About.aspx ページを開き、MainContent Content要素内のすべてのマークアップを削除し、その場所に次のマークアップを挿入します。

<h2>Student Body Statistics</h2>
    <asp:ObjectDataSource ID="StudentStatisticsObjectDataSource" runat="server" TypeName="ContosoUniversity.BLL.SchoolBL"
        SelectMethod="GetStudentStatistics" DataObjectTypeName="ContosoUniversity.DAL.EnrollmentDateGroup">
    </asp:ObjectDataSource>
    <asp:GridView ID="StudentStatisticsGridView" runat="server" AutoGenerateColumns="False"
        DataSourceID="StudentStatisticsObjectDataSource">
        <Columns>
            <asp:BoundField DataField="EnrollmentDate" DataFormatString="{0:d}" HeaderText="Date of Enrollment"
                ReadOnly="True" SortExpression="EnrollmentDate" />
            <asp:BoundField DataField="StudentCount" HeaderText="Students" ReadOnly="True"
                SortExpression="StudentCount" />
        </Columns>
    </asp:GridView>

プロジェクトを実行し、[バージョン情報] ページを選択します。

[バージョン情報] ページ

コマンド ラインを使用してテストにデプロイする

別のデータベース変更をデプロイすることはないため、aspnet-ContosoUniversity データベースで dbDacFx データベースのデプロイを無効にします。 Web 発行ウィザードを開き、3 つの発行プロファイルのそれぞれで、[設定] タブの [データベースを更新する] チェック ボックスをオフにします。

Windows 8 の [スタート] ページで、VS2012 開発者コマンド プロンプトを検索します。

VS2012 開発者コマンド プロンプトのアイコンを右クリックし、[管理者として実行] をクリックします。

コマンド プロンプトで次のコマンドを入力し、ソリューション ファイルへのパスをユーザーのソリューション ファイルへのパスに置き換えます。

msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Test

MSBuild がソリューションをビルドしたら、テスト環境にデプロイされます。

コマンド ライン出力

ブラウザーを開き、[http://localhost/ContosoUniversity] に移動した後に [バージョン情報] ページをクリックして、デプロイが成功したことを確認します。

テストでまだ学生を作成していない場合は、[学生身体統計] 見出しの下に空のページが表示されます。 [学生] ページに移動し、[学生の追加] をクリックして学生を追加し、[バージョン情報] ページに戻って学生の統計情報を表示します。

[バージョン情報] ページの [Student Body Statistics]\(学生の本文の統計情報\) を示すスクリーンショット。

主要なコマンド ライン オプション

入力したコマンドは、ソリューション ファイルのパスと 2 つのプロパティを MSBuild に渡しました。

msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true 
/p:PublishProfile=Test

ソリューションのデプロイと個々のプロジェクトのデプロイの比較

ソリューション ファイルを指定すると、ソリューション内のすべてのプロジェクトがビルドされます。 ソリューションに複数の Web プロジェクトがある場合は、次の MSBuild ビヘイビアーが適用されます。

  • コマンド ラインで指定したプロパティは、すべてのプロジェクトに渡されます。 そのため、各 Web プロジェクトには、ユーザーが指定した名前を持つ発行プロファイルが必要です。 /p:PublishProfile=Test を指定する場合、各 Web プロジェクトには Test という名前の発行プロファイルが必要です。
  • 別のプロジェクトがビルドされなくても、あるプロジェクトを正常に発行できることがあります。 詳細については、StackOverflow のスレッド「2 つのパッケージでは MSBuild が失敗する」をご覧ください。

ソリューションの代わりに個々のプロジェクトを指定する場合は、Visual Studio のバージョンを指定するパラメーターを追加する必要があります。 Visual Studio 2012 を使用している場合、コマンド ラインは次の例のようになります。

msbuild C:\ContosoUniversity\ContosoUniversity\ContosoUniversity.csproj /p:DeployOnBuild=true /p:PublishProfile=Test /p:VisualStudioVersion=11.0

Visual Studio 2010 のバージョン番号は 10.0 です。 詳細については、Sayed Hashimi のブログ記事「Visual Studio プロジェクトの互換性と VisualStudioVersion」をご覧ください。

発行プロファイルの指定

発行プロファイルは、次の例に示すように、名前または .pubxml ファイルへの完全パスで指定できます。

msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=C:\ContosoUniversity\ContosoUniversity\Properties\PublishProfiles\Test.pubxml

コマンド ライン発行でサポートされる Web 発行メソッド

コマンド ラインの発行では、次の 3 つの発行メソッドがサポートされています。

  • MSDeploy - Web 配置を使用して発行します。
  • Package - Web 配置パッケージを作成して発行します。 パッケージを作成する MSBuild コマンドとは別にパッケージをインストールする必要があります。
  • FileSystem - 指定したフォルダーにファイルをコピーして発行します。

ビルド構成とプラットフォームの指定

ビルド構成とプラットフォームは、Visual Studio またはコマンド ラインで設定する必要があります。 発行プロファイルには LastUsedBuildConfigurationLastUsedPlatform という名前のプロパティが 含まれていますが、これらのプロパティを設定してプロジェクトのビルド方法を決定することはできません。 詳細については、Sayed Hashimi のブログ記事「MSBuild: 構成プロパティを設定する方法」を参照してください。

ステージングへのデプロイ

Azure にデプロイするには、コマンド ラインにパスワードを追加する必要があります。 Visual Studio の発行プロファイルにパスワードを保存した場合、パスワードは暗号化された形式で .pubxml.user ファイルに格納されています。 コマンド ラインのデプロイを行う際、MSBuild はそのファイルにアクセスしないため、コマンド ライン パラメーターでパスワードを渡す必要があります。

  1. 先ほどステージング Web サイト用にダウンロードした .publishsettings ファイルから、必要なパスワードをコピーします。 パスワードは、Web 配置の publishProfile 要素の userPWD 属性の値です。

    Web デプロイ パスワード

  2. Windows 8 の [スタート] ページで VS2012 開発者コマンド プロンプトを検索し、アイコンをクリックしてコマンド プロンプトを開きます。 (ローカル コンピューター上の IIS にデプロイするわけではないため、今回は管理者として開く必要はありません)。

  3. コマンド プロンプトで次のコマンドを入力し、ソリューション ファイルへのパスをユーザーのソリューション ファイルへのパスに置き換え、パスワードをユーザーのパスワードに置き換えます。

    msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Staging /p:Password=hdNSWsbuqno7J5uqnwKafwlfNPt1DSco7J5uqnwKafwlfNPt1DSpKHuYgCco7J5 /p:AllowUntrustedCertificate=true
    

    このコマンド ラインには、追加のパラメーター /p:AllowUntrustedCertificate=true が含まれていることに注意してください。 このチュートリアルの記述時点では、コマンド ラインから Azure に発行するときに AllowUntrustedCertificate プロパティを設定する必要があります。 このバグの修正プログラムがリリースされると、そのパラメーターは必要なくなります。

  4. ブラウザーを開き、ステージング サイトの URL に移動し、[バージョン情報] ページをクリックしてデプロイが成功したことを確認します。

    前にテスト環境で確認したように、[バージョン情報] ページで統計情報を表示するには、学生を作成する必要がある場合があります。

運用環境への配置

運用環境にデプロイするプロセスは、ステージングのプロセスと似ています。

  1. 運用 Web サイト用に先ほどダウンロードした .publishsettings ファイルから、必要なパスワードをコピーします。

  2. VS2012 開発者コマンド プロンプトを開きます。

  3. コマンド プロンプトで次のコマンドを入力し、ソリューション ファイルへのパスをユーザーのソリューション ファイルへのパスに置き換え、パスワードをユーザーのパスワードに置き換えます。

    msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Production /p:Password=hdNSWsbuqnwKafwlo7J5uqnwKafwlfNPt1DSqnwKafwlfNPt1DSpKHuYgCco7J5 /p:AllowUntrustedCertificate=true
    

    実際の運用サイトの場合、データベースにも変更があった場合は、通常、デプロイ前に app_offline.htm ファイルをサイトにコピーし、デプロイが成功した後に削除します。

  4. ブラウザーを開き、ステージング サイトの URL に移動し、[バージョン情報] ページをクリックしてデプロイが成功したことを確認します。

まとめ

これで、コマンド ラインを使用してアプリケーションの更新プログラムをデプロイしました。

学生の本文の統計情報を表示する [バージョン情報] ページを示すスクリーンショット。

次のチュートリアルでは、Web 発行パイプラインを拡張する方法の例を示します。 例では、プロジェクトに含まれていないファイルをデプロイする方法を示します。