TeamCity 2020.2 ヘルプ

.NET

TeamCity には、.NET ビルドステップ、ビルドエージェントでの .NET 検出、およびリポジトリ内のビルドステップの自動検出を提供する .NET ツールチェーンの組み込みサポートが付属しています。

このページでは、.NET ランナーの構成について詳しく説明します。チュートリアルとデモについては、このブログ投稿シリーズ(英語)を参照してください。

要件

.NET ランナーを使用するには、ビルドエージェントマシンに次のソフトウェアをインストールする必要があります。

コマンド 必要なソフトウェア

.NET CLI コマンド
(クロスプラットフォーム msbuild および vstest を含む)

msbuild.exe を介した msbuild コマンド
(Windows のみの MSBuild バージョンが選択されている場合)

  • Visual Studio(バージョン 2010 以降)
    または

  • Visual Studio ビルドツール(2010 以降)
    または

  • .NET フレームワーク Developer Pack(バージョン 4.5 以降)と .NET SDK

VSTests.Console.exe を介した vstest コマンド
(Windows のみの VSTest バージョンが選択されている場合)

  • Visual Studio (バージョン 2010 以降)

devenv コマンド

  • Visual Studio (バージョン 2010 以降)

.NET バージョン検出アルゴリズム

TeamCity は、次の順序で .NET 実行可能ファイルを検索します。

  1. TeamCity エージェントの環境変数 DOTNET_HOME で定義されたディレクトリ内。例: DOTNET_HOME=D:\SDK\dotnet\

  2. .NET 実行可能ファイルのデフォルトディレクトリ:
    • Windows: C:\Program Files\dotnet または C:\Program Files (x86)\dotnet、または他のデフォルトのプログラムファイルディレクトリ (環境変数 ProgramW6432 に応じて)

    • Unix: /usr/share/dotnet

    • Mac: /usr/local/share/dotnet

  3. PATH 環境変数で指定されたパス内。

TeamCity は、検出した最初の .NET バージョンを使用します。複数の .NET バージョンがインストールされている場合は、DOTNET_HOME 変数に最新バージョンを指定することをお勧めします。

ビルドランナーオプション

現在、.NET ランナーは次のコマンドをサポートしています。

* クロスプラットフォームの .NETSDK を使用してプロジェクトを構築する場合、msbuild および vstestCLI コマンド(英語)として実行されます。それ以外の場合は、それぞれ msbuild または VSTest.Console ツールを使用して実行されます

また、どんなカスタム .NET コマンドを指定することができ、かつあるよう TeamCity はそれを実行します。

基本コマンド

.NET ランナーのオプションのセットは、選択したコマンドによって異なります。基本的な .NET CLI コマンドで使用可能なオプションは次のとおりです。

オプション

説明

プロジェクト

プロジェクトとソリューションへのパス。改行で区切られています。ワイルドカードがサポートされています。パラメーター参照がサポートされています。完成したビルドがある場合は、ここでファイル / ディレクトリセレクターを使用できます。

作業ディレクトリ

オプション。チェックアウトディレクトリと異なる場合に設定します。パラメーター参照がサポートされています。完成したビルドがある場合は、ここでファイル / ディレクトリセレクターを使用できます。

フレームワーク

ターゲットフレームワーク。例: netcoreapp または netstandard パラメーター参照がサポートされています。

構成

ReleaseDebug などのターゲット構成。パラメーター参照がサポートされています。

ランタイム

ターゲットランタイム。

パラメーター参照がサポートされています。指定されたプロジェクトファイルに ランタイム ID(英語) が記載されている場合は、magic-wand.png ボタンをクリックしてこのランタイムをすばやく選択できます。

オプション

プロジェクトをビルドしない」チェックボックスは、パックまたはテストの前にプロジェクトをビルドするかどうかを宣言します。

NuGet パッケージソース

復元中に使用する NuGet パッケージソース。

出力ディレクトリ

出力を配置するディレクトリ。パラメーター参照がサポートされています。完成したビルドがある場合は、ここでファイル / ディレクトリセレクタを使用できます。

バージョンサフィックス

プロジェクトの $(VersionSuffix) プロパティの値。パラメーター参照がサポートされています。

コマンドラインパラメーター

dotnet コマンドの追加コマンド行パラメーター(英語)

ログの冗長性

使用可能なロギングモード: <Default>MinimalNormalDetailed または Diagnostic

高度なコマンド

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 ランナーにソフトに切り替えるには、次のことを行う必要があります。

  1. Visual Studio(sln)ランナーの設定とコマンドラインパラメーターの値を覚えているか、コピーします。

  2. Visual Studio(sln)ビルドステップを .NET ランナーに切り替え、msbuild コマンドを選択します。

  3. 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> のままにします。

単独で実行

分離されたプロセスでテストを実行することを選択します。

テストろ過

テストろ過モードを選択します。

  • テスト名 : 含まれているアセンブリで検出されたすべてのテストのうち、指定された値と一致する名前のテストのみが実行されます。複数の値の場合は、改行で区切ります。フィールドが空の場合、すべてのテストが実行されます。
    詳細については、マイクロソフトのドキュメント(英語)を参照してください。

  • テストケースフィルター : 指定された式に一致するテストを実行します。
    詳細については、マイクロソフトのドキュメント(英語)を参照してください。

設定ファイル

.runsettings (英語) ファイルへのパスを設定します。

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 つを選択します: cleanrebuildbuild または deploy

Visual Studio バージョン

必要に応じて、インストールされている Visual Studio のバージョンを指定します。<Any> のままにして、インストールされている最新バージョンを使用します。

詳細については、要件のセクションを参照してください。

カスタムコマンド

TeamCity 2020.1.1 以降、.NET ランナーでは、任意のカスタム .NET コマンドまたは実行可能ファイルをそのまま起動できます。

ランナーは、<custom> コマンドオプションに対して次の設定を提供します。

実行可能ファイルフィールドには、拡張子が .com.exe.cmd.bat.sh.dll のファイルと拡張子のないファイルが必要です。複数の実行可能ファイルを改行で区切って指定できます。

コマンドラインパラメーターフィールドでは、指定した実行可能ファイルを補完するカスタムコマンドまたは引数を入力できます。

入力した設定に応じて、.NET ランナーは各カスタムコマンドを透過的に処理します。一般的な使用例については、次のリストを参照してください。

ユースケース 実行可能ファイル コマンドラインパラメーター 結果

指定された .NETCore ツールをマシンにインストール(英語)します

ツールインストール <ツール名>

指定されたパラメーターで dotnet を実行します。例: Windows では dotnet.exe tool install <toolname>

引数を使用して .NET アプリケーションを実行する

MyApp.dll

-arg1 arg2 arg3

MyApp.dll -- arg1 arg2 arg3 を実行します。

ユーザーを表示する (英語)

whoami.exe

Windows whoami.exe プロセスを実行します。

コンソールを介して XUnit テストを実行する

C:\XUnit\xunit.console.exe

C:\TestAssemblies\MyTests.dll -xml C:\TestResults\MyTests.xml

Windows で xunit.console.exe を介して XUnit テストを実行します。このケースは、コードカバレッジ統計の収集によく使用されます。

scripts ディレクトリ内のすべての CMD ファイルを同じ引数で実行します

スクリプト / *.cmd

arg1 arg2

デフォルトの Windows コマンドラインインタープリター cmd.exe を使用して、指定されたディレクトリ内のすべての .cmd スクリプトを同じパラメーターセット arg1 arg2 で実行します。

同じ引数で SH ファイルを実行する

build_src.sh
build_doc.sh

-c リリース

/bin/sh を使用して、指定された両方の .sh スクリプトを同じパラメーター -c release で実行します。

Docker の設定

.NET CLI ビルドステップは、指定された Docker コンテナーで実行できます。

コードカバレッジ

JetBrains dotCover は、msbuildtestvstest のカバレッジツール、およびいくつかのカスタムコマンドとしてサポートされています。

プライベート NuGet フィードでの認証

TeamCity では、プライベート NuGet フィードを使用して認証することができます。さらに読む NuGet

エージェントによって報告されたパラメーター

起動時に、ビルドエージェントは次のパラメーターを報告します。

パラメーター

説明

DotNetCLI

.NET CLI バージョン。

DotNetCLI_Path

.NET CLI 実行可能ファイルへのパス。

DotNetCoreSDKx.x_Path

.NET SDK バージョン。

.NET ランナー FAQ

スペースを含むパラメーターを渡す方法

スペース文字を含むパラメーター値を渡す最良の方法は、システムプロパティを使用することです。例: ビルド設定 | パラメーターAny CPU 値を使用して system.Platform パラメーターを追加し、.NET ステップ内でこの値を %system.Platform% として参照できます。
別のアプローチは、コマンドラインパラメーターを次のようにラップすることです: "/p:Platform=Any CPU"