.NET
TeamCity には、.NET ビルドステップ、ビルドエージェントでの .NET 検出、およびリポジトリ内のビルドステップの自動検出を提供する .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/dotnet
Mac:
/usr/local/share/dotnet
PATH
環境変数で指定されたパス内。
TeamCity は、検出した最初の .NET バージョンを使用します。複数の .NET バージョンがインストールされている場合は、DOTNET_HOME
変数に最新バージョンを指定することをお勧めします。
ビルドランナーオプション
現在、.NET ランナーは次のコマンドをサポートしています。
- 基本的な .NET CLI コマンド:
build
(英語)clean
(英語)restore
(英語)
( プライベートフィードでの認証には .NET CLI 2.1.400+ が必要)pack
(英語)publish
(英語)run
(英語)test
(英語)
- 高度なコマンド:
msbuild
*vstest
*nuget delete
( プライベートフィードでの認証には .NET CLI 2.1.500+ が必要)nuget push
( プライベートフィードでの認証には .NET CLI 2.1.500+ が必要)
- Visual Studio コマンドラインモード(Visual Studio リファレンス(英語)で詳細を読む):
* クロスプラットフォームの .NETSDK を使用してプロジェクトを構築する場合、msbuild
および vstest
は CLI コマンド(英語)として実行されます。それ以外の場合は、それぞれ msbuild
または VSTest.Console
ツールを使用して実行されます。
また、どんなカスタム .NET コマンドを指定することができ、かつあるよう TeamCity はそれを実行します。
基本コマンド
.NET ランナーのオプションのセットは、選択したコマンドによって異なります。基本的な .NET CLI コマンドで使用可能なオプションは次のとおりです。
オプション | 説明 |
---|---|
プロジェクト | プロジェクトとソリューションへのパス。改行で区切られています。ワイルドカードがサポートされています。パラメーター参照がサポートされています。完成したビルドがある場合は、ここでファイル / ディレクトリセレクターを使用できます。 |
作業ディレクトリ | オプション。チェックアウトディレクトリと異なる場合に設定します。パラメーター参照がサポートされています。完成したビルドがある場合は、ここでファイル / ディレクトリセレクターを使用できます。 |
フレームワーク | ターゲットフレームワーク。例: |
構成 | |
ランタイム | ターゲットランタイム。 パラメーター参照がサポートされています。指定されたプロジェクトファイルに ランタイム ID(英語) が記載されている場合は、 |
オプション | 「プロジェクトをビルドしない」チェックボックスは、パックまたはテストの前にプロジェクトをビルドするかどうかを宣言します。 |
NuGet パッケージソース | 復元中に使用する NuGet パッケージソース。 |
出力ディレクトリ | 出力を配置するディレクトリ。パラメーター参照がサポートされています。完成したビルドがある場合は、ここでファイル / ディレクトリセレクタを使用できます。 |
バージョンサフィックス | プロジェクトの |
コマンドラインパラメーター | |
ログの冗長性 | 使用可能なロギングモード: |
高度なコマンド
msbuild
msbuild
コマンドは、プロジェクトとそのすべての依存関係を Microsoft BuildEngine でビルドするために使用されます。
選択した MSBuild のバージョンに応じて、msbuild
はクロスプラットフォームの .NET CLI コマンド(英語)または Windows のみの msbuild.exe
ツール(英語)のいずれかとして実行できます。
msbuild
コマンドは、.NET ランナーの基本的な CLI コマンドといくつかの共通オプションを共有しています(詳細については、対応するセクションを参照してください)。
サポートされている MSBuild バージョン: 4 以降 / 12 以降。
MSBuild 固有の設定は次のとおりです。
オプション | 説明 |
---|---|
ターゲット | スペースまたはセミコロンで区切られたターゲットのリスト。ターゲットは、プロジェクトの目的のための任意のスクリプトです。使用可能なターゲットを表示するには、フィールドの横にあるリストアイコンをクリックします。 |
MSBuild バージョン | インストールされている MSBuild エンジンのバージョンを指定します。詳細については、要件のセクションを参照してください。 |
MSBuild ランナーからの移行
TeamCity 2019.2.3 以降、.NET ランナーは、MSBuild エンジンでプロジェクトをビルドするための推奨方法です。.NET プラットフォーム開発戦略を長期間サポートするために、リファクタリングされた .NET ランナーに msbuild
コマンドを含めました。
既存のビルド構成の MSBuild の手順を .NET ランナーに安全に切り替えることができます。すべての追加のコマンドラインパラメーターと他の重要な設定を新しいランナーにコピーしてください。.NET ランナーで使用可能な設定の詳細については、 msbuild
セクションを参照してください。
.NET ランナーで追加される機能は次のとおりです。
.NET プロジェクトのクロスプラットフォーム MSBuild のサポート
ランタイムフィールドで指定された別のプラットフォーム用のプロジェクトをビルドする機能
Docker ラッパー拡張機能を使用して Docker コンテナーでプロジェクトを実行する機能
移行する前に、次の点を考慮してください。
.NET ランナーは、デフォルトで x86 実行プラットフォームを使用します。x86 バージョンが利用できない場合は、x64 を使用します。
.NET ランナーは、dotCover に対してのみコードカバレッジを提供します。
Mono はこのランナーではサポートされていません。
MSBuild ステップで Mono または NCover/ PartCover のいずれかを積極的に使用している場合は、フィードバックチャネルのいずれかを介してそれについてお知らせください。
Visual Studio(sln)ランナーからの移行
Visual Studio (sln) ビルドランナーは、その内部で MSBuild エンジンを使用しており、VS ユーザーが TeamCity でプロジェクトをビルドする際のエクスペリエンスを容易にするためのいくつかの調整を提供します。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
への移行の詳細については、それぞれのセクションを参照してください。
vstst
vstest
コマンドは、VSTest エンジンでプロジェクトをテストし、テスト結果を自動的にインポートするために使用されます。選択した VSTest バージョンに応じて、vstest
はクロスプラットフォームの .NET CLI コマンド(英語)または VSTest コンソール(英語)として実行できます。
サポートされている VSTest バージョン: 2013 以降。
vstest
コマンドは、.NET ランナーの基本的な CLI コマンドといくつかの共通オプションを共有しています(詳細については、対応するセクションを参照してください)。
VSTest 固有のフィールドは次のとおりです。
オプション | 説明 |
---|---|
テストアセンブリ | テストを実行するアセンブリへのパスの改行で区切られたリストを指定します。ワイルドカードがサポートされています。 |
VSTest バージョン | インストールされている VSTest のバージョンを指定します。詳細については、要件のセクションを参照してください。 |
プラットフォーム | 必要に応じて、ターゲットプラットフォーム(x86、x64、または ARM)を指定します。VSTest で選択したプラットフォームを使用するには、<Auto> のままにします。 |
単独で実行 | 分離されたプロセスでテストを実行することを選択します。 |
テストろ過 | テストろ過モードを選択します。
|
設定ファイル | |
Visual Studio テストランナーからの移行
TeamCity 2019.2.3 以降、.NET ランナーは、Visual Studio テストランナーの代わりに VSTest でプロジェクトをテストするための推奨方法です。.NET プラットフォーム開発戦略を長期間サポートするために、リファクタリングされた .NET ランナーに vstest
コマンドを含めました。
選択した vstest
コマンドを使用して、既存の Visual Studio テストのビルドステップを .NET ランナーに安全に移行できます。すべての追加のコマンドラインパラメーターと他の重要な設定を新しいランナーにコピーしてください。.NET ランナーで使用可能な設定の詳細については、 vstest
セクションを参照してください。
.NET ランナーで追加される機能は次のとおりです。
.NET プロジェクトのクロスプラットフォーム VSTest のサポート
デフォルトでのリアルタイムテストレポート
ARM プラットフォームと x86 および x64 のサポート
Docker ラッパー拡張機能を使用して、Docker コンテナー内でプロジェクトを実行およびテストする機能
移行する前に、次の点を考慮してください。
.NET ランナーは、VSTest 設定ファイルの新しい
.runsettings
(英語) 形式をサポートしています。ただし、Visual Studio テストランナーで使用されている古い実行構成ファイル形式はサポートしていません。フレームワークバージョンの代わりに、.NET ランナーは VSTest バージョンを指定するように要求します。
.NET ランナーは、dotCover に対してのみコードカバレッジを提供します。MSBuild の手順で NCover または PartCover を積極的に使用している場合は、フィードバックチャネルのいずれかを介して NCover または PartCover についてお知らせください。
.NET ランナーは、そのフレームワークのすべての機能が VSTest でカバーされているため、MSTest ツールをサポートしていません。Visual Studio テストランナーのエンジンとして MSTest を使用していた場合は、.NET ランナーに移行するときに VSTest に切り替えることをお勧めします。
nuget 削除
TeamCity は、 nuget delete
(英語) コマンドを完全にサポートしています。
Nuget Push
TeamCity は、 nuget push
(英語) コマンドを完全にサポートしています。
Visual Studio コマンドラインモード
TeamCity 2019.2.3 以降、.NET ランナーは devenv
(英語) コマンドで Visual Studio コマンドラインモードをサポートします。
Devenv を使用すると、IDE のカスタムオプションを構成し、さまざまなスイッチ(英語)を使用してコマンドラインからプロジェクトをビルド、デバッグ、デプロイできます。
devenv
は、.NET ランナーの基本的な CLI コマンドといくつかの共通オプションを共有しています(詳細については、対応するセクションを参照してください)。
Devenv 固有のフィールドは次のとおりです。
オプション | 説明 |
---|---|
ビルドアクション | サポートされているスイッチの 1 つを選択します: |
Visual Studio バージョン | 必要に応じて、インストールされている Visual Studio のバージョンを指定します。<Any> のままにして、インストールされている最新バージョンを使用します。 詳細については、要件のセクションを参照してください。 |
カスタムコマンド
TeamCity 2020.1.1 以降、.NET ランナーでは、任意のカスタム .NET コマンドまたは実行可能ファイルをそのまま起動できます。
ランナーは、<custom> コマンドオプションに対して次の設定を提供します。
- 実行可能ファイル
- コマンドラインパラメーター
- 作業ディレクトリ
- .NET カバレッジ
- Docker 設定
実行可能ファイルフィールドには、拡張子が .com
、.exe
、.cmd
、.bat
、.sh
、.dll
のファイルと拡張子のないファイルが必要です。複数の実行可能ファイルを改行で区切って指定できます。
コマンドラインパラメーターフィールドでは、指定した実行可能ファイルを補完するカスタムコマンドまたは引数を入力できます。
入力した設定に応じて、.NET ランナーは各カスタムコマンドを透過的に処理します。一般的な使用例については、次のリストを参照してください。
ユースケース | 実行可能ファイル | コマンドラインパラメーター | 結果 |
---|---|---|---|
指定された .NETCore ツールをマシンにインストール(英語)します | ツールインストール <ツール名> | 指定されたパラメーターで | |
引数を使用して .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 で |
| スクリプト / *.cmd | arg1 arg2 | デフォルトの Windows コマンドラインインタープリター |
同じ引数で SH ファイルを実行する | build_src.sh | -c リリース | |
Docker の設定
.NET CLI ビルドステップは、指定された Docker コンテナーで実行できます。
コードカバレッジ
JetBrains dotCover は、msbuild
、test
、vstest
のカバレッジツール、およびいくつかのカスタムコマンドとしてサポートされています。
プライベート NuGet フィードでの認証
TeamCity では、プライベート NuGet フィードを使用して認証することができます。さらに読む NuGet
エージェントによって報告されたパラメーター
起動時に、ビルドエージェントは次のパラメーターを報告します。
パラメーター | 説明 |
---|---|
| .NET CLI バージョン。 |
| .NET CLI 実行可能ファイルへのパス。 |
| .NET SDK バージョン。 |
.NET ランナー FAQ
スペースを含むパラメーターを渡す方法
スペース文字を含むパラメーター値を渡す最良の方法は、システムプロパティを使用することです。例: ビルド設定 | パラメーターの Any CPU
値を使用して system.Platform
パラメーターを追加し、.NET ステップ内でこの値を %system.Platform%
として参照できます。
別のアプローチは、コマンドラインパラメーターを次のようにラップすることです: "/p:Platform=Any CPU"