1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ぽんぬの個人的Advent Calendar 2023

Day 10

MSBuildを使用して.NET Frameworkで作成されたアプリをコマンドラインからビルド&デプロイする

Posted at

実際のコマンド

ClickOnesアプリケーションの場合

.\msbuild "C:\ProjectPath\Project.sln" `
  /t:Publish `
  /t:Rebuild `
  /p:Configuration=Release `
  /p:RestorePackagesConfig=True `
  /p:PublishDir="C:\OutProject\" `
  /p:Platform="Any CPU" `
  -verbosity:quiet `
  -maxCpuCount:4

※msbuildのインストール場所については、記事末尾に記載しています。

Webアプリケーションの場合(Folder出力)

.\msbuild "C:\ProjectPath\Project.sln" `
  /t:Publish `
  /t:Rebuild `
  /p:Configuration=Release `
  /p:RestorePackagesConfig=True `
  /p:PublishProfile="C:\ProjectPath\Properties\PublishProfiles\FolderProfile.pubxml" `
  /p:DeployOnBuild=true `
  /p:PublishUrl="C:\OutProject\" `
  -verbosity:quiet `
  -maxCpuCount:4

PublishProfilesに設定しているファイルは以下の通りです。
<PropertyGroup>内で設定している各値は、msbuildのオプションの/p:プロパティ名で上書きすることが出来ます。

\Properties\PublishProfiles\FolderProfile.pubxml
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <DeleteExistingFiles>True</DeleteExistingFiles>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <PublishProvider>FileSystem</PublishProvider>
    <PublishUrl>C:\DefaultOutDirectory\</PublishUrl>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <SiteUrlToLaunchAfterPublish />
  </PropertyGroup>
</Project>

各オプションの説明(共通)

/t:Publish

MSBuildに対してプロジェクトをビルドし、その後にプロジェクトをデプロイすることを指示します。デプロイ時には、ビルドされた成果物が指定された場所にコピーされます。

/t:Rebuild

プロジェクトのリビルドを行います。つまり、ビルド前に古い成果物をクリーンアップし、新しいビルドを実行します。

/p:Configuration

ビルド時に使用する構成を指定します。一般的な値にはDebugやReleaseなどがあります。

-verbosity

ビルド ログに表示する情報量を指定します。値には以下が指定可能です。

  • quiet ・・・ 最小限の情報
  • minimal ・・・ 簡易的な情報
  • normal ・・・ 通常の情報(規定値)
  • detailed ・・・ 詳細な情報
  • diagnostic・・・ 診断情報

-maxCpuCount

ビルドに使用される最大のプロセッサ数を指定します。並列ビルドを有効にするためのオプションです。
並列ビルドを有効にすると、ほとんどの場合でビルドパフォーマンスが向上しますが、実行環境によってはパフォーマンスが低下する可能性もあります(高負荷時や低コアのCPUなど)

/p:RestorePackagesConfig

NuGet パッケージがプロジェクトに復元されるように指定します。
プロジェクトのpackage.configに記載のあるパッケージが復元対象です。

各オプションの説明(ClickOnes)

/p:PublishDir

デプロイ先のディレクトリを指定します。

/p:Platform

デプロイ対象のプラットフォームを指定します。

各オプションの説明(Webアプリケーション(Folder出力))

/p:DeployOnBuild

Webアプリケーションをビルドした際にデプロイを行うかどうかを指定します。trueの場合、デプロイが実行されます。

/p:PublishProfile

このオプションは、Webアプリケーションのデプロイ設定が記述されたプロファイルファイルのパスを指定します。
プロファイルの場所については、一度でもVisualStudio上で以下のアプリケーションデプロイ画面(プロジェクトを右クリック -> 発行)でプロファイルを作成した場合は、
[プロジェクトのディレクトリ]\Properties\PublishProfiles\FolderProfile.pubxmlに存在します。

Visual Studio 2019のアプリケーションデプロイ画面

/p:PublishUrl

デプロイ先のディレクトリを指定します。
PublishUrlPublishProfile内で指定していますが、今回はコマンドからデプロイ先を指定したい為、上書きしています。

MSBuildのインストール場所

Visual Studio 2017の場合

C:\Program Files (x86)\Microsoft Visual Studio\2017\{Edition}\MSBuild\15.0\Bin\MSBuild.exe

Visual Studio 2019の場合

C:\Program Files (x86)\Microsoft Visual Studio\2019\{Edition}\MSBuild\Current\Bin\MSBuild.exe

Visual Studio 2022の場合

C:\Program Files\Microsoft Visual Studio\2022\{Edition}\MSBuild\Current\Bin\MSBuild.exe

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?