.NET
TeamCity .NET ビルドステップでは、.NET (Core) および .NET Framework をターゲットとする任意のアプリケーションをビルド、テスト、デプロイできるほか、NuGet パッケージのダウンロードとプッシュもできます。
.NET の構成とパイプラインでのステップ
クラシックビルド構成では、.NET は、選択した コマンドに応じて設定が変化する単一のビルドステップです。

パイプラインでは、これらの各コマンドは個別のビルドステップとして使用できます。

エージェント要件
.NET ステップでは、ビルドエージェントマシンに次のソフトウェアがインストールされている必要があります。
コマンド | 必要なソフトウェア |
|---|---|
.NET CLI コマンド |
|
|
|
|
|
|
|
.NET バージョン検出アルゴリズム
TeamCity は、次の順序で .NET 実行可能ファイルを検索します:
TeamCity エージェントの環境変数
DOTNET_HOMEで定義されたディレクトリ内。 例:DOTNET_HOME=D:\SDK\dotnet\。.NET 実行可能ファイルのデフォルトディレクトリ:
Windows:
C:\Program Files\dotnetまたはC:\Program Files (x86)\dotnet、または他のデフォルトのプログラムファイルディレクトリ (環境変数ProgramW6432に応じて)Unix:
/usr/share/dotnetMac:
/usr/local/share/dotnet
パス環境変数で指定されたパス内。
TeamCity は、最初に見つかった .NET バージョンを使用します。 複数の .NET バージョンがインストールされている場合は、 DOTNET_HOME 変数に最新バージョンを指定することをお勧めします。
ステップ設定
.NET ステップ設定のリストとそれに対応する UI ラベルは、ビルド構成を構成するかパイプラインを構成するかによって若干異なります。
メイン設定
- コマンド
次のいずれかのコマンドを選択できます。
復元
(プライベートフィードの認証には .NET CLI 2.1.400+ が必要です)nuget delete
(プライベートフィードの認証には .NET CLI 2.1.500+ が必要です)nuget push
(プライベートフィードの認証には .NET CLI 2.1.500+ が必要です)devenv(Visual Studio リファレンスでさらに読む)
- プロジェクト
プロジェクトとソリューションへのパスを改行で区切ったリストです。
*ワイルドカードをサポートしています。 パラメーター参照はサポートしていません。- 作業ディレクトリ
ビルドステップが開始されるディレクトリです。 デフォルトでは、エージェントがリモートソースをチェックアウトするルートディレクトリと同じです。 詳細については、次のトピックを参照してください: ビルド作業ディレクトリ。
- フレームワーク
ターゲットフレームワーク。 例:
netcoreappまたはnetstandard。 パラメーター参照をサポートします。- 必須 SDK
ビルドエージェントにインストールする必要がある SDK のスペース区切りのリスト。 例:
8 4.8.2これらがないエージェントは、このビルドを実行するには 互換性がないとみなされます。
- 構成
ターゲット構成。 例:
リリースまたはデバッグ。 パラメーター参照をサポートします。- ランタイム
ターゲットランタイム。 パラメーター参照をサポートします。
指定された プロジェクトファイルに ランタイム ID が記載されている場合は、
ボタンをクリックしてこのランタイムをすぐに選択できます。- オプション
特定のコマンドに使用できる追加オプション。
プロジェクトをビルドしない — プロジェクトを最初にビルドせずに公開またはテストできます。
単一のセッションでテストを実行 — 複数のテストアセンブリが
テストまたはvstestコマンドのターゲットとしてリストされている場合、TeamCity はターゲットごとに個別のテストコマンドを呼び出せます。
- NuGet パッケージソース
復元中に使用する NuGet パッケージソース。
- 出力ディレクトリ
出力を配置するディレクトリ。 パラメーター参照をサポートします。
- バージョンサフィックス
プロジェクト内の
$(VersionSuffix)プロパティの値。 パラメーター参照をサポートします。- コマンドラインパラメーター
dotnetコマンドの 追加のコマンドラインパラメーター。- ログの詳細度
次のいずれかのログ詳細モードを選択できます。
<デフォルト>最小通常詳細診断
'msbuild' コマンドオプション
msbuild コマンドは、Microsoft ビルドエンジンを使用してプロジェクトとそのすべての依存関係をビルドするために使用されます。 選択した MSBuild のバージョンに応じて、 msbuild は クロスプラットフォームの .NET CLI コマンドまたは Windows のみの msbuild.exe ツールとして実行できます。
msbuild コマンドは、.NET ランナーの基本的な CLI コマンドといくつかの共通オプションを共有します (詳細については、 対応するセクションを参照してください)。
サポートされている MSBuild バージョン: 4 以降 / 12 以降。
- ターゲット
スペースまたはセミコロンで区切られたターゲットのリストです。 ターゲットとは、プロジェクトで使用する任意のスクリプトです。 フィールドの横にあるリストアイコンをクリックすると、利用可能なターゲットが表示されます。
- MSBuild バージョン
インストールされている MSBuild エンジンのバージョン。 特定のバージョンのネイティブ MSBuild が使用されるようにするには(たとえば Docker コンテナー内など)、
パス環境変数にMSBuild.exeへのパスを設定する必要があります。 詳細については、 エージェント要件 セクションを参照してください。このフィールドにバージョンを設定し、 現在のステップをコンテナー内で実行することを選択した場合は、
パス環境変数にMSBuild.exeへのパスを指定してください。 これにより、.NET ランナーは Docker コンテナー内でも必要な実行ファイルを見つけることができるようになります。
'vstest' コマンドオプション
vstest コマンドは、VSTest エンジンでプロジェクトをテストし、テスト結果を自動的にインポートするために使用されます。 選択した VSTest バージョンに応じて、 vstest は クロスプラットフォームの .NET CLI コマンドまたは VSTest コンソール(英語)として実行できます。
サポートされている VSTest バージョン: 2013 以降。
- テストアセンブリ
テストを実行するアセンブリへのパス (ビルドチェックアウトディレクトリからの相対パス) を改行で区切ったリスト。 ワイルドカードをサポートします。
- 除外されたテストアセンブリ
改行区切りのパスのリスト (ビルドチェックアウトディレクトリからの相対パス) で、
vstestコマンドが無視するアセンブリへのパスです。 ワイルドカードをサポートします。- VSTest バージョン
使用する VSTest のバージョン。 詳細については、 エージェント要件 のセクションを参照してください。
- プラットフォーム
ターゲットプラットフォーム。 例:
x86 アーキテクチャ、x64、またはARM。<自動>のままにして、VSTest にプラットフォームを自動的に選択させます。- 単独で実行
TeamCity が分離されたプロセスでテストを実行できるようにします。
- テストフィルタリング
次のテストろ過モードのいずれかを選択できます。
テスト名 — 含まれているアセンブリで検出されたすべてのテストのうち、指定された値と一致する名前のテストのみが実行されます。 値が複数ある場合は、新しい行で区切ります。 フィールドが空の場合、すべてのテストが実行されます。 詳細は Microsoft のドキュメントを参照してください。
テストケースフィルター — 指定された式に一致するテストを実行します。 詳細は Microsoft のドキュメントを参照してください。
関連事項: 選択した単体テストを実行する
- テスト再試行回数
テストが失敗した場合、TeamCity は同じビルド実行中にそのテストの自動再実行をシームレスに開始できます。 失敗したテストは、成功するか、最大試行回数に達するまで再起動されます。 この手法により、 不安定なテストを特定し、起動試行回数に関係なく一貫して失敗する本当に問題のあるテストと区別できます。
最初は失敗したが、その後の再実行で正常に終了したテストは自動的にミュートされます。 ビルド結果ページの テストタブを確認して、各テストに必要だった再実行回数を確認できます。

- 設定ファイル
.runsettingsファイルへのパス。
'devenv' コマンドオプション
.NET ランナーは、 devenv コマンドで Visual Studio コマンドラインモードをサポートします。
Devenv を使用すると、IDE のカスタムオプションを構成し、さまざまな スイッチを使用してコマンドラインからプロジェクトをビルド、デバッグ、デプロイできます。
devenv は、.NET ランナーの基本的な CLI コマンドといくつかの共通オプションを共有します (詳細については、 対応するセクションを参照してください)。
- ビルドアクション
サポートされている値のいずれか:
クリーンリビルドビルドデプロイ
- Visual Studio バージョン
インストールされている Visual Studio のバージョン。
<任意>では最新のバージョンを使用します。詳細については、 エージェント要件 のセクションを参照してください。
コンテナー設定
このビルドステップは、Docker または Podman によってデプロイされたコンテナー内で実行できます。
クラシックビルド構成ステップでは、イメージ名、プラットフォーム、追加の実行引数を指定できる一連のプロパティが表示されます。 イメージを明示的にプルにより、このステップが実行されるたびに TeamCity がターゲットコンテナーからイメージを確実にプルします。

指定されたイメージを検索するレジストリを TeamCity に指定するには、プロジェクトに Docker/Podman 接続を追加します。 デフォルトでは、この接続により TeamCity は Docker Hub から匿名モードでイメージをプルできますが、任意のコンテナーレジストリ向けに設定できます。
詳細については、次の記事を参照してください: コンテナーラッパー。
コンテナー内でステップを実行するには、 Docker で実行をオンに切り替えます。 有効にすると、この要素に 2 つのオプションが表示されます。

Docker イメージ — Docker または Podman レジストリからイメージをプルできます。 デフォルトでは、TeamCity は Docker Hub イメージを匿名モードでプルできます。 その他の場合 (プライベートイメージ、カスタムイメージレジストリ、Docker Hub のレート制限に違反しないようにする非匿名モード) は、パイプラインまたはジョブレベルで Docker 統合を構成します。
Dockerfile — Dockerfile からカスタムイメージをビルドできます。
コードカバレッジ
JetBrains dotCover は、 msbuild、 テスト、 vstest 、および多数のカスタムコマンドのカバレッジツールとしてサポートされています。 複数の個別の .NET ランナーによって生成されたスナップショットを 1 つの統合レポートにマージするには、構成に dotCover を追加します。
カスタムコマンド
.NET ステップでは、任意のカスタム .NET コマンドまたは実行ファイルをそのまま起動できます。 これを行うには、ビルドステップの コマンド 設定で <カスタム> を選択します。
このコマンドは、次の固有の設定をサポートします。
- 実行可能ファイル
実行するファイルのリスト(改改行コード)。 サポートされているファイル拡張子は
.com、.exe、.cmd、.bat、.sh、.DLLと、拡張子のないファイルです。- コマンドラインパラメーター
指定された実行可能ファイルを補完するカスタムコマンドまたは引数のリスト。
入力した設定に応じて、.NET ランナーは各カスタムコマンドを透過的に処理します。 一般的な使用例については、次のリストを参照してください。
ユースケース | 実行可能ファイル | コマンドラインパラメーター | 結果 |
|---|---|---|---|
指定された .NETCore ツールをマシンに インストール(英語)します | tool install \<ツール名\> | 指定されたパラメーターで | |
引数を使用して .NET アプリケーションを実行する | MyApp.dll | -arg1 arg2 arg3 |
|
whoami.exe | Windows | ||
コンソールを介して XUnit テストを実行する | C:\XUnit\xunit.console.exe | C:\TestAssemblies\MyTests.dll -xml C:\TestResults\MyTests.xml | Windows で |
| scripts/*.cmd | arg1 arg2 | デフォルトの Windows コマンドラインインタープリター |
同じ引数で SH ファイルを実行する | ビルドソース | -c リリース |
|
プライベート NuGet フィードでの認証
TeamCity では、プライベート NuGet フィードを使用して認証できます。 さらに読む NuGet
エージェントによって報告されるパラメーター
起動時に、ビルドエージェントは次のパラメーターを報告します。
- DotNetCLI
.NET CLI バージョン。
- DotNetCLI_Path
.NET CLI 実行可能ファイルへのパス。
- DotNetFramework<バージョン>[_x86|_x64]
対応するバージョン(複数可)の .NET Framework ランタイムがインストールされている場合にのみ定義されます。
- DotNetFramework<バージョン>[_x86|_x64]_パス
このパラメーターの値は、対応するフレームワークランタイムのバージョン(複数可)のパス(複数可)に設定されます。
このパラメーターは、各メジャーリリースでインストール済みの最新バージョンに対してのみ定義されることに注意してください。 たとえば、バージョン 3.5、4.5、4.8 がインストールされている場合、このパラメーターは 3.5 と 4.8 に対してのみ定義されます。 より新しいバージョンの .NET Framework 4 が存在するため、バージョン/パラメーター 4.5 は省略されます。 そのようなバージョンを明示的に定義するには、代わりにDotNetFrameworkTargetingPack<バージョン>_Pathパラメーターの使用を検討してください。- DotNetFrameworkSDK<バージョン>[_x86|_x64]
対応するバージョン(複数可)の .NET Framework SDK がインストールされている場合に定義されます。
- DotNetFrameworkSDK<バージョン>[_x86|_x64]_パス
対応するフレームワーク SDK バージョンへのパス。
- DotNetFrameworkTargetingPack<バージョン>_Path
対応する参照アセンブリ (別名 Targeting Pack) の場所へのパス。
- DotNetCoreSDKx.x_パス
.NET SDK バージョン。
- DotNetWorkloads_<バージョン>
エージェントマシンにインストールされているすべての .NET ワークロード を一覧表示します。
<バージョン>サフィックスは、インストール済み .NET SDK のバージョンです。 たとえば、バージョン 7.0.300 がインストールされている場合、エージェントは `DotNetWorkloads_7.0.300` パラメーターを報告します。
これらの完全な SDK バージョンに加えて、エージェントは短縮されたメジャー.マイナーサフィックスを持つワークロードパラメーターを報告します。 たとえば、エージェントマシンに 7.0.100、7.0.200、7.0.300 の .NET SDK がインストールされている場合、最上位の 7.0.300 バージョンを参照するDotNetWorkloads_7.0パラメーターが報告されます。
パラメーター値は、 <dotnet_dir>/metadata/workloads/<sdk_version>/InstalledWorkloads ディレクトリ内のフォルダーに基づく、カンマ区切りのワークロード名の文字列です。 たとえば、"android,maui-ios,wasm-tools" です。- WindowsSDK<バージョン>
対応するバージョンの Windows SDK がインストールされている場合にのみ定義されます。
- WindowsSDK<バージョン>_パス
対応するバージョンの Windows SDK のパス。
- VS<バージョン>
対応するバージョン(複数可)の Visual Studio がインストールされている場合に定義されます
- VS<バージョン>_パス
Visual Studio インストールフォルダー (devenv.exe を含むディレクトリ) へのパス。
- teamcity.dotnet.nunitlauncher<バージョン>
スタンドアロンの NUnit テストランチャー
NUnitLauncher.exeを含むディレクトリへのパス。 バージョン番号は、テストが実行される .NET Framework のバージョンを指します。 バージョンは .NET Framework のバージョンと等しくなります。- teamcity.dotnet.nunitlauncher.msbuild.task
MSBuild、Visual Studio (sln) 用の NUnit タスクを提供する MSBuild タスク
dllを含むディレクトリへのパス。- teamcity.dotnet.msbuild.extensions2.0
MSBuild 2.0 リスナーとタスクアセンブリを含むディレクトリへのパス。
- teamcity.dotnet.msbuild.extensions4.0
MSBuild 4.0 リスナーとタスクアセンブリを含むディレクトリへのパス。
非推奨ランナーから .NET ランナーへの移行
MSBuild ランナーからの移行
TeamCity 2019.2.3 以降、MSBuild エンジンを使用してプロジェクトをビルドするには、.NET ランナーが推奨される方法です。 .NET プラットフォーム開発戦略の長期サポートを確保するために、リファクタリングされた .NET ランナーに msbuild コマンドを追加しました。
既存のビルド構成の MSBuild の歩数を .NET ランナーに安全に切り替えることができます。 すべての追加のコマンドラインパラメーターと他の重要な設定を新しいランナーにコピーしてください。 .NET ランナーで使用可能な設定の詳細については、 msbuild セクションを参照してください。
.NET ランナーで追加される機能は次のとおりです。
.NET プロジェクト用のクロスプラットフォーム MSBuild のサポート。
ランタイムフィールドで指定された異なるプラットフォーム用のプロジェクトをビルドする機能。
コンテナーラッパー 拡張機能を備えた Docker コンテナーでプロジェクトを実行する機能。
移行する前に、次の点を考慮してください。
.NET ランナーは、デフォルトで x86 実行プラットフォームを使用します。 x86 バージョンが利用できない場合は、x64 を使用します。
.NET ランナーは、 dotCover に対してのみコードカバレッジを提供します。
Mono はこのランナーではサポートされていません。
MSBuild ステップで Mono または NCover/PartCover のいずれかを積極的に使用している場合は、いずれかの フィードバックチャネルからお知らせください。
Visual Studio (sln) ランナーからの移行
Visual Studio (sln) ビルドランナーは内部で MSBuild エンジンを使用しており、TeamCity でプロジェクトをビルドする際の VS ユーザーの体験を向上させるために、いくつかの調整を提供します。 TeamCity 2019.2.3 以降、.NET ランナーは MSBuild エンジンでプロジェクトをビルドするための推奨方法であり、Visual Studio (sln) ステップのユーザーにとっても移行オプションとなります。
一般に、既存の各 Visual Studio(sln) ビルドステップを .NET ランナーにソフトに切り替えるには、次のことを行う必要があります。
Visual Studio(sln) ランナーの設定とコマンドラインパラメーターの値を覚えているか、コピーします。
Visual Studio(sln) ビルドステップを .NET ランナーに切り替え、
msbuildコマンドを選択します。msbuildセクションに従ってフィールドに入力します。
一部のフィールドは .NET ランナーで異なる対応項目を持つ点に注意してください:Visual Studio のバージョンとプラットフォームの代わりに、MSBuild のバージョンを指定する必要があります。 バージョンに関するリファレンス(英語)を参照してください。
ソリューションへのパスは、 プロジェクトフィールドで指定する必要があります。
msbuild への移行の詳細については、 それぞれのセクションを参照してください。
Visual Studio Tests ランナーからの移行
TeamCity 2019.2.3 以降、.NET ランナーは、 Visual Studio Tests ランナーの代わりに VSTest でプロジェクトをテストするための推奨方法です。 .NET プラットフォーム開発戦略を長期間サポートするために、リファクタリングされた .NET ランナーに vstest コマンドを含めました。
選択した vstest コマンドを使用して、既存の Visual Studio テストのビルドステップを .NET ランナーに安全に移行できます。 すべての追加のコマンドラインパラメーターと他の重要な設定を新しいランナーにコピーしてください。 .NET ランナーで使用可能な設定の詳細については、 vstest セクションを参照してください。
.NET ランナーで追加される機能は次のとおりです。
.NET プロジェクト用のクロスプラットフォーム VSTest のサポート。
デフォルトでは、リアルタイムのテストレポート。
x86 および x64 に加えて、ARM プラットフォームのサポート。
コンテナーラッパー 拡張機能を備えた Docker コンテナー内でプロジェクトを実行およびテストする機能。
移行する前に、次の点を考慮してください。
.NET ランナーは、VSTest 設定ファイルの新しい
.runsettings形式をサポートしています。 ただし、Visual Studio テストランナーで使用されている古い実行構成ファイル形式はサポートしていません。フレームワークバージョンの代わりに、.NET ランナーは VSTest バージョンを指定するように要求します。
.NET ランナーは、 dotCover に対してのみコードカバレッジを提供します。 MSBuild ステップで NCover または PartCover を積極的に使用している場合は、いずれかの フィードバックチャネルからお知らせください。
.NET ランナーは、そのフレームワークのすべての機能が VSTest でカバーされているため、MSTest ツールをサポートしていません。 Visual Studio テストランナーのエンジンとして MSTest を使用していた場合は、.NET ランナーに移行するときに VSTest に切り替えることをお勧めします。
並列テスト
.NET ランナーが テスト または vstest コマンドを実行する場合、TeamCity はワークロードを複数のバッチに分割できます。 この場合、テストは別の自動生成ビルド (別のビルドエージェント上) で実行されます。 この動作を有効にするには、 並列テスト ビルド機能を TeamCity ビルド構成に追加します。
.NET ランナー FAQ
スペースを含むパラメーターを渡す方法
スペース文字を含むパラメーター値を渡す最適な方法は、 システムプロパティを使用することです。 たとえば、 ビルド構成設定 | パラメーター で Any CPU 値を持つ system.Platform パラメーターを追加し、その後 .NET ステップ内でこの値を %system.Platform% として参照できます。
別の方法は、コマンドラインパラメーターを "/p:Platform=Any CPU" のようにラップすることです。