Visual Studio では、統合開発環境 (IDE) でプロジェクトが作成されている場合でも、コマンド ラインからプロジェクトをビルドできます。 実際、Visual Studio で作成したプロジェクトは、.NET 5 以降のみがインストールされている別のコンピューターでリビルドできます。 この機能を使用すると、自動化されたプロセスを使用してビルドを再現できます。たとえば、中央のビルド ラボや、プロジェクト自体をビルドする範囲を超えた高度なスクリプト手法を使用できます。
注
コマンド ラインから .NET Framework ClickOnce アプリケーションをビルドするには、「コマンド ライン から ClickOnce アプリケーションをビルドする」を参照してください。
MSBuild を使用して .NET ClickOnce アプリケーションの配置を再現する
コマンド ラインで msbuild /target:publish を呼び出すと、このコマンドは、プロジェクトをビルドし、発行フォルダーに ClickOnce アプリケーションを作成するように MSBuild システムに指示します。 このコマンドは、IDE で [発行 ] コマンドを選択することと同じです。
このコマンドは 、 Visual Studio コマンド プロンプト環境のパスにあるmsbuild.exeを実行します。
"target" は、コマンドの処理方法に関する MSBuild のインジケーターです。 主要なターゲットは、"ビルド" ターゲットと "発行" ターゲットです。 ビルド ターゲットは、IDE で Build コマンドを選択する (または F5 キーを押す) のと同じです。 プロジェクトをビルドするだけの場合は、「 msbuild」と入力できます。 このコマンドは、ビルド ターゲットが Visual Studio によって生成されるすべてのプロジェクトの既定のターゲットであるために機能します。 その結果、ビルド ターゲットを明示的に指定する必要はありません。 したがって、 msbuild 入力は、 msbuild /target:build入力と同じ操作です。
/target:publish コマンドは、発行ターゲットを呼び出すように MSBuild に指示します。 発行ターゲットはビルド ターゲットに依存します。つまり、発行操作はビルド操作のスーパーセットです。 たとえば、Visual Basic または C# のソース ファイルに変更を加えた場合、発行操作によって対応するアセンブリが自動的に再構築されます。
Mage.exe コマンド ライン ツールを使用して ClickOnce マニフェストを作成して完全な ClickOnce 配置を生成する方法については、「 チュートリアル: ClickOnce アプリケーションを手動で配置する」を参照してください。
MSBuild を使用して基本的な ClickOnce アプリケーションを作成およびビルドする
発行プロファイルを作成する最も簡単な方法は、Visual Studio を使用する方法です。 MSBuild を使用して発行するには、発行プロファイルが必要です。
ClickOnce プロジェクトを作成して発行する
Visual Studio を開き、新しいプロジェクトを作成します。
Windows フォーム アプリまたは WPF アプリケーション プロジェクト テンプレートを選択し、プロジェクトに
CmdLineDemo名前を付け、プロジェクトを作成します。ソリューション エクスプローラーでプロジェクトを右クリックし、[発行] を選択 します。
この手順により、ClickOnce アプリケーションの配置を生成するようにプロジェクトが適切に構成されます。
[発行] ページが表示されます。
[発行] ページで、[ 発行プロファイルの追加] を選択し、[ ClickOnce] を選択して、[ 完了] を選択します。
この演習では、[発行] ページの他の構成設定は無視できます。
プロセスが完了したら、[ 閉じる ] を選択して [発行] ページ ダイアログを終了します。
公開を選択します。
Visual Studio によって ClickOnce 配置出力が生成されます。
プロジェクトを保存し、保存されているフォルダーの場所を書き留めます。
前の手順により、初めて発行された ClickOnce プロジェクトを作成しました。 IDE の外部でビルドを再現できるようになりました。
コマンド ラインからビルドを再現する
Visual Studio を終了します。
Windows の [スタート] メニューから、[ ツール>コマンド ライン>Developer コマンド プロンプトを選択します。
Visual Studio 開発者コマンド プロンプトが開きます。
Visual Studio コマンド プロンプトで、現在のディレクトリに、前にビルドしたプロジェクトの場所が表示されていることを確認します。
プロジェクト ディレクトリで作業していない場合は、
chdir C:\Users\username\source\repos\CmdLineDemoなど、目的の場所に変更するコマンドを入力します。前のセクションで生成された既存のファイルを削除するには、「
rmdir /s publish」と入力します。この手順は省略可能ですが、コマンド ライン ビルドによってすべての新しいファイルが確実に生成されます。
.NET 5 以降では、コマンド ラインからの .NET ClickOnce アプリケーションのビルドも同様のエクスペリエンスです。 1 つの違いは、MSBuild コマンド ラインで発行プロファイルに追加のプロパティを指定する必要がある点です。
「
msbuild /target:publish /p:PublishProfile=<pubxml file> /p:PublishDir="<specific ___location>"」と入力します。上記の手順では、 publish という名前のプロジェクトのサブフォルダーに完全な ClickOnce アプリケーション配置が生成されます。 CmdLineDemo.application は ClickOnce 配置マニフェストです。 フォルダー CmdLineDemo_1.0.0.0 には、ClickOnce アプリケーション マニフェスト CmdLineDemo.exe および .manifestCmdLineDemo.exe ファイルが含まれています。 Setup.exe はブートストラップであり、既定では .NET をインストールするように構成されています。 このフォルダー内のファイルは、アプリケーションを Web 経由で、または UNC または CD/DVD 経由で展開するために必要なファイルのセット全体で構成されます。
注
MSBuild システムでは 、PublishDir オプションを使用して、 msbuild /t:publish /p:PublishProfile=<pubxml file> /p:PublishDir="<specific ___location>"などの出力の場所を指定します。
公開プロセスの出力
MSBuild では、 PublishDir プロパティを使用して、ビルド成果物を含むビルド出力の場所を設定します。 MSBuild が発行先として使用するPublishDir値は、.PublishDir ファイル (.NET) の プロパティから既定で取得されます。
/p スイッチを使用して、MSBuild コマンド ラインでこの動作をオーバーライドすることもできます。 設定をオーバーライドすると、発行出力は指定された場所に移動します。 出力は、発行の MSBuild ステップ中に生成されます。
AfterTargets="ClickOncePublish"を持つ MSBuild ターゲットは、このコピーが作成された後に実行されます。
PublishUrlとは異なり、PublishDir プロパティは MSBuild ステップでは使用されません。
PublishUrl は、MSBuild を直接呼び出してコマンド ラインから発行する場合は無視されます。
Visual Studio IDE で発行を開始すると、Visual Studio によって MSBuild が呼び出され、成果物が PublishDir の場所に発行されます。 この MSBuild ステップが完了すると、Visual Studio は ClickOnce 固有のファイルを、 PublishUrlが指す場所に発行します。 この 2 番目の手順は、Visual Studio プロセス内で実行されます。 Visual Studio プロセスであるため、この手順中に実行するターゲット/タスクを挿入することはできません。
Visual Studio を使用しない MSBuild デプロイの場合は、展開ディレクトリ内のすべてのファイルを展開先またはメディアにコピーします。 展開ディレクトリには、Web サイトまたは FTP サイト上のフォルダー、ファイル共有、CD-ROM のいずれかを指定できます。 たとえば、サードパーティのツールやカスタム MSBuild タスクを使用して ClickOnce ファイルをコピーできます。
PublishUrl フォルダー内の後処理には、別のスクリプトが必要です。
Important
PublishDirがPublishUrlと同じ場所に設定されている場合、重複するコンパイル出力がPublishUrlの場所にコピーされます。 新しいプロファイルを作成することで、Visual Studio 2022 バージョン 17.4 以降でこの問題を回避できます。 新しいプロファイルでは、 PublishDir が PublishUrlとは異なる場所に設定されます。 発行操作の最後に、関連する ClickOnce ファイルが PublishDir から PublishUrl 場所にコピーされます。
プロパティを発行する
前の手順を使用してアプリケーションを発行すると、.NET プロジェクト (.NET 5 以降) の発行プロファイル ファイルに次のプロパティが挿入されます。 これらのプロパティは、ClickOnce アプリケーションの生成方法に直接影響します。
.pubxml の場合:
<AssemblyOriginatorKeyFile>WindowsApplication3.snk</AssemblyOriginatorKeyFile>
<GenerateManifests>true</GenerateManifests>
<TargetZone>LocalIntranet</TargetZone>
<PublisherName>Microsoft</PublisherName>
<ProductName>CmdLineDemo</ProductName>
<PublishUrl>http://localhost/CmdLineDemo</PublishUrl>
<Install>true</Install>
<ApplicationVersion>1.0.0.*</ApplicationVersion>
<ApplicationRevision>1</ApplicationRevision>
<UpdateEnabled>true</UpdateEnabled>
<UpdateRequired>false</UpdateRequired>
<UpdateMode>Foreground</UpdateMode>
<UpdateUrlEnabled>false</UpdateUrlEnabled>
<IsWebBootstrapper>true</IsWebBootstrapper>
<BootstrapperEnabled>true</BootstrapperEnabled>
プロジェクト ファイル自体を変更せずに、コマンド ラインでこれらのプロパティをオーバーライドできます。 たとえば、次のコードは、ブートストラップなしで ClickOnce アプリケーションの配置をビルドします。
msbuild /target:publish /p:PublishProfile=<pubxml file> /property:BootstrapperEnabled=false
発行プロパティは、プロジェクト デザイナーの [発行]、[セキュリティ]、[署名] プロパティ ページから Visual Studio で制御されます。 .NET プロジェクト (.NET 5 以降) の場合、これらの設定は pubxml ファイルで提供されています。この設定は、発行ツールを使用して Visual Studio でアクセスできます。
次の発行プロパティは、アプリケーション デザイナーのさまざまなプロパティ ページで設定されます。
-
AssemblyOriginatorKeyFileは、ClickOnce アプリケーション マニフェストの署名に使用されるキー ファイルを決定します。 この同じキーを使用して、アセンブリに厳密な名前を割り当てることもできます。 このプロパティは、プロジェクト デザイナーの [署名] ページで設定します。 .NET Windows アプリケーションの場合、この設定はプロジェクト ファイルに残ります。
[発行] ページでは、次のプロパティが設定されます。
PublishUrlは、IDE でアプリケーションが発行される場所です。InstallUrlプロパティとUpdateUrlプロパティの両方が指定されていない場合は、ClickOnce アプリケーション マニフェストに挿入されます。ApplicationVersionは、ClickOnce アプリケーションのバージョンを指定します。 バージョンは 4 桁の数字です。 最後の桁が "*" (アスタリスク) の場合、ApplicationRevisionはビルド時にマニフェストに挿入された値に置き換えます。ApplicationRevisionはリビジョンを指定します。 この値は整数であり、IDE で発行するたびにインクリメントされます。 コマンド ラインで実行されるビルドに対して自動的にインクリメントされていないことに注意してください。Installは、アプリケーションがインストールされているアプリケーションか、Web から実行されるアプリケーションかを決定します。InstallUrl(表示されません) は、ユーザーがアプリケーションをインストールする場所です。 指定した場合、 プロパティが有効になっている場合、この値はIsWebBootstrapper書き込まれます。UpdateUrlが指定されていない場合は、アプリケーション マニフェストにも挿入されます。SupportUrl(表示されません) は、インストールされているアプリケーションの [ プログラムの追加と削除 ] ダイアログ ボックスにリンクされている場所です。
[発行] ページからアクセスする [アプリケーションの更新] ダイアログ ボックスでは、次のプロパティが設定されます。
UpdateEnabledは、アプリケーションが更新プログラムを確認する必要があるかどうかを示します。UpdateModeは、フォアグラウンド更新プログラムを指定します。 .NET プロジェクト (.NET 5 以降) の場合、バックグラウンドはサポートされていません。UpdateUrl(表示されません) は、アプリケーションが更新プログラムを受信する場所です。 指定した場合、この値はアプリケーション マニフェストに挿入されます。
[ 発行オプション] ダイアログ ボックスで、[発行] ページから アクセスできる次のプロパティを設定します。
PublisherNameは、アプリケーションをインストールまたは実行するときに表示されるプロンプトに表示されるパブリッシャーの名前を指定します。 インストールされているアプリケーションの場合は、[ スタート ] メニューでフォルダー名を指定するためにも使用されます。ProductNameは、アプリケーションをインストールまたは実行するときに表示されるプロンプトに表示される製品の名前を指定します。 インストールされているアプリケーションの場合は、[ スタート] メニューでショートカット名を指定するためにも使用されます。
[発行] ページからアクセスする [前提条件] ダイアログ ボックスでは、次のプロパティが設定されます。
BootstrapperEnabledは、 setup.exe ブートストラップを生成するかどうかを決定します。IsWebBootstrapperは、 setup.exe ブートストラップが Web 上で動作するか、ディスク ベース モードで動作するかを決定します。
オプションの使用: InstallURL、SupportUrl、PublishURL、UpdateURL
次の表に、ClickOnce 配置の 4 つの URL オプションを示します。
| URL オプション | Description |
|---|---|
PublishURL |
ClickOnce アプリケーションを Web サイトに発行するために必要です。 |
InstallURL |
Optional. インストール サイトが PublishURLと異なる場合は、この URL オプションを設定します。 たとえば、 PublishURL を FTP パスに設定し、 InstallURL を Web URL に設定できます。 |
SupportURL |
Optional. サポート サイトが PublishURLと異なる場合は、この URL オプションを設定します。 たとえば、 SupportURL を会社のカスタマー サポート Web サイトに設定できます。 |
UpdateURL |
Optional. 更新場所が InstallURLと異なる場合は、この URL オプションを設定します。 たとえば、 PublishURL を FTP パスに設定し、 UpdateURL を Web URL に設定できます。 |