ホームに戻る
出典 :
dotnet コマンドによるビルド | Do Design Space コマンドラインでC#プログラミング - Qiita dotnet build コマンド - .NET CLI | Microsoft Learn dotnet publish コマンド - .NET CLI | Microsoft Learn dotnet pack コマンド - .NET CLI | Microsoft Learn .NET Runtime Identifier (RID) カタログ | Microsoft Learn SDK スタイル プロジェクトでのターゲット フレームワーク - .NET | Microsoft Learn LoggerVerbosity Enum (Microsoft.Build.Framework) | Microsoft Learn MSBuild コマンド ライン リファレンス - MSBuild | Microsoft Learn Devenv コマンド ライン スイッチ - Visual Studio (Windows) | Microsoft Learn
関連 :
パッケージの発行
目次 :

コマンドラインでのビルド

.NETプロジェクト(CSPROJなど)はコマンドラインでのビルドが可能である。
但し、これらビルドに必要なプログラムは.NET SDKに含まれており、使用するには.NET SDKまたはVisual Studioをインストールする必要がある。
dotnet コマンドはビルドに限らずプロジェクトの作成なども可能であるが、ここでは既存のプロジェクトをビルドする方法を紹介するに留める。

ビルドに使用するプログラム

Visual Studio 2022 Communityを C:\Program Files にインストールした場合の例

dotnet コマンド

コマンド 解説 備考
dotnet build ビルドを行う 内部で restore を行う
(ソースコードしかない状態でも実行可能)
dotnet msbuild MSBuild.exe と同じ引数を指定して実行する 内部で restore を行わない
(ソースコードしかない状態では実行不可)
dotnet publish 発行を行う 内部で build を行う
(ソースコードしかない状態でも実行可能)
dotnet pack NuGet パッケージを作成する 参照先のDLLは含まれず、依存関係が設定される
内部で build を行わない
(ソースコードしかない状態では実行不可)
dotnet clean 前回のビルド結果を消去する restore の結果(依存関係)は残る
dotnet run アプリをビルドし、実行する 内部で build を行う
(ソースコードしかない状態でも実行可能)
ビルドには MSBuild.exe を使用する。
環境変数(PATH)が設定されていない都合上、MSBuild.exe を直接呼び出す場合は完全なパスを指定しなければならないが、
dotnet コマンドは.NET SDK(またはVisual Studio)がインストールされていればPATHが設定されるため、パスを指定せず使用できる。

また、ビルドに際しては project.assets.json ファイルを参照する。
これはプロジェクトの依存関係(ビルド対象のプロジェクトが、どのアセンブリに依存しているか)を記述しており、dotnet restore によって作成(復元)される。
但し、dotnet build は暗黙的に復元を行うため、通常は restore を明示的に実行する必要は無い。
(オプションの指定により、暗黙的復元を無効化することも可能。詳細は後述。)

dotnet build

プロジェクトと、その依存関係のビルドを実行する。

構文

オプションの詳細は後述。
dotnet build [<PROJECT>|<SOLUTION>] [-a|--arch <ARCHITECTURE>] [-c|--configuration <CONFIGURATION>] [-f|--framework <FRAMEWORK>] [--force] [--interactive] [--no-dependencies] [--no-incremental] [--no-restore] [--nologo] [--no-self-contained] [--os <OS>] [-o|--output <OUTPUT_DIRECTORY>] [-r|--runtime <RUNTIME_IDENTIFIER>] [--self-contained [true|false]] [--source <SOURCE>] [--use-current-runtime, --ucr [true|false]] [-v|--verbosity <LEVEL>] [--version-suffix <VERSION_SUFFIX>]

引数

<PROJECT>|<SOLUTION>
ビルド対象のプロジェクトまたはソリューションファイル。
省略した場合は、現在の作業ディレクトリから "proj" / "sln" のいずれかで終わるファイルを検索し、そのファイルを使用する。

dotnet msbuild

MSBuild.exe と共通のパラメータを用いて実行する。そのため、MSBuild.exe を直接呼び出すことと等価である。
通常は内部で restore を行わないため、ソースコードしかない状態ではエラーとなる。
詳細はリンク先を参照のこと。

dotnet publish

アプリとその依存関係をフォルダに発行し、ホスティングシステム(導入先のコンピュータ)で使用できるようにする。
dotnet build 同様、依存関係の復元( restore )は暗黙的に実行される。

構文

オプションの詳細は後述。
dotnet publish [<PROJECT>|<SOLUTION>] [-a|--arch <ARCHITECTURE>] [-c|--configuration <CONFIGURATION>] [-f|--framework <FRAMEWORK>] [--force] [--interactive] [--manifest <PATH_TO_MANIFEST_FILE>] [--no-buile] [--no-dependencies] [--no-restore] [--nologo] [--no-self-contained] [--os <OS>] [-o|--output <OUTPUT_DIRECTORY>] [-r|--runtime <RUNTIME_IDENTIFIER>] [--sc|--self-contained [true|false]] [-s|--source <SOURCE>] [--use-current-runtime, --ucr [true|false]] [-v|--verbosity <LEVEL>] [--version-suffix <VERSION_SUFFIX>]

引数

<PROJECT>|<SOLUTION>
dotnet build と共通。

公開プロパティの参照

公開プロパティが記述された .pubxml ファイルを参照することも可能である。.pubxml ファイル はVisual Studioで公開を行うと作成される。
リンク先も併せて参照のこと。
dotnet publish -p:PublishProfile=FolderProfile
PublishProfile プロパティは が前提とされており、パスと拡張子が含まれていてもそれらは無視される。
上記の場合、<project_folder>\Properties\PublishProfiles\FolderProfile.pubxml が参照される。
PublishProfile ではなく PublishProfileFullPath プロパティを使用すると、パスと拡張子を含めたファイル名を指定できる。

オプション一覧(dotnet build / publish)

オプション (省略形) パラメータ 解説 build publish 備考
--arch -a ターゲットアーキテクチャ
(ランタイム識別子(RID))
ターゲットアーキテクチャを指定する .NET 6 Preview 7 以降で使用可能
--runtime との併用不可
--configuration -c ビルド構成
(Debug / Release ほか)
ビルド構成を指定する 既定値は Debug
--framework -f ターゲットフレームワーク(net7.0 / net462 など) 特定のフレームワーク向けにコンパイルする際、そのフレームワークを指定する
--force 依存関係を強制的に再解決(復元)する project.assets.json ファイルの削除と等価
--interactive コマンド実行の際に、ユーザ入力を待ち合わせる .NET Core 3.0 SDK 以降で使用可能
--manifest マニフェストファイルのパス パッケージをトリミングするためのマニフェストファイルを指定する 複数のマニフェストを指定する場合、マニフェストごとに --manifest を追加する
--no-build 発行前にプロジェクトのビルドを行わない --no-restore が暗黙的に設定される
--no-dependencies プロジェクト間参照を無視し、指定されたルートプロジェクトのみをビルドする
--no-incremental インクリメンタルコンパイルを無効とし、すべての依存関係がクリーン再ビルドされる
--no-restore ビルド時に暗黙的な復元( restore )を実行しない
--nologo 著作権情報を表示しない
--output -o ビルド済みバイナリの出力先ディレクトリ 既定値は ./bin/<CONFIGURATION>/<FRAMEWORK>/
--os ターゲットOS
(ランタイム識別子(RID))
ターゲットOSを指定する .NET 6 以降で使用可能
--runtime との併用不可
--runtime -r ターゲットランタイム
(ランタイム識別子(RID))
ターゲットランタイムを指定する .NET 6 以降で使用可能
--arch 、--os との併用不可
--self-contained または --no-self-contained の指定が必要
--self-contained --sc true (デフォルト)
false
アプリケーションを自己完結バイナリとしてビルドする
(バイナリに.NETランタイムが含まれるため、ランタイムを別途ターゲットコンピュータにインストールする必要が無い)
.NET 6 SDK 以降で使用可能
true (省略時含む) : 自己完結( --no-self-contained と相反)
false : 自己完結でない( --no-self-contained と等価)
--no-self-contained フレームワーク依存(自己完結でない)のアプリケーションとしてビルドする .NET 6 SDK 以降で使用可能
--self-contained と相反
--source NuGetパッケージソースURI 復元操作に使用するNuGetパッケージソースのURIを指定する
--verbosity -v ビルド時のログ出力レベル ビルド経過表示の詳細度を指定する
--use-current-runtime --ucr true
false
現在のランタイムを使用してビルドするかを指定する
--version-suffix $(VersionSuffix) プロパティ値 $(VersionSuffix) プロパティの値を指定する $(Version) プロパティが設定されている場合は無効
-l MSBuild.exe に渡すロガースイッチを指定する -l:<NAME>=<VALUE> / -p:<NAME>=<VALUE> 形式で指定 詳細はリンク先を参照
-p MSBuild.exe に渡すスイッチを指定する
--help -h
-?
コマンドの使用方法を出力する

devenv コマンド

devenv を使用すると、IDE(Visual Studio)の機能を使用できる。
通常、ビルドは MSBuild を使用すれば十分だが、インストーラープロジェクトなど一部のプロジェクトは MSBuild でのビルドに対応していないため、devenv を介してIDEの機能によりビルドを行う。
(上記のような例外を除き、ビルドでは devenv ではなく MSBuild の使用が推奨されている。)

devenv のスイッチ

ビルドに関連するものを抜粋。原典はリンク先を参照のこと。
尚、devenv 自身の引数はソリューションファイルである。/Project スイッチを用いない限り、プロジェクトを指定した操作はできない。
スイッチ パラメータ 解説 記述例
/Build ソリューション構成( Debug / Release ほか)(省略時は Debug) 指定されたソリューション、またはプロジェクトをビルドする devenv mysln.sln /build
/Clean 指定されたソリューション、またはプロジェクトのビルド生成物を削除(クリーン)する devenv mysln.sln /clean
/Deploy 指定されたソリューション、またはプロジェクトを配置に必要なファイルとともにビルドし、配置(公開)する devenv mysln.sln /deploy
/Out ビルドの経過を記録するファイルを指定する devenv mysln.sln /build Debug /out log.txt
/Project プロジェクトファイル名 操作の対象となるプロジェクトを指定する
必ず /Build 、/Rebuild 、/Clean 、/Deploy 、/Upgrade と共に用いる
devenv mysln.sln /build Debug /project proj1
/ProjectConfig プロジェクト構成( Debug / Release ほか)(省略時は Debug) ビルドまたは配置するプロジェクト構成を指定する
必ず /Project と共に用いる
devenv mysln.sln /build Release /project proj1 /projectconfig Release
/Rebuild ソリューション構成( Debug / Release ほか)(省略時は Debug) 指定されたソリューション、またはプロジェクトをリビルドする devenv mysln.sln /rebuild
/Upgrade 指定されたソリューションに含まれるすべてのプロジェクトファイル、または指定されたプロジェクトを最新のVisual Studioの形式に更新する devenv mysln.sln /upgrade