Mono サポート
Mono フレームワークは、Windows と Unix ベースのプラットフォームの両方で .NET アプリケーションを実行するための代替フレームワークです。
詳細については、 Mono 公式サイトを参照してください。
サポートされているビルドランナー
TeamCity は、Mono フレームワークおよび .NET Framework で、 NAnt と MSBuild ランナーを使用した .NET ビルドの実行をサポートしています。 (Mono では xbuild として MSBuild)
NuGet ランナーは、エージェントに Mono がインストールされている場合、Linux と macOS をサポートします。 Mono 4.4.2\+ 上の NuGet CLI 3.2\+ のみがサポートされていることに注意してください。
レポート作成タスクをテストするは Mono でもサポートされています。
Mono プラットフォーム検出
ビルドエージェントが起動すると、Mono のインストールを自動的に検出します。
各プラットフォームで、Mono の検出は NAnt のものと互換性があります。 NAnt でのフレームワーク検出については NAnt.exe.config を参照してください。
エージェントプロパティ
エージェント側で Mono が自動的に検出されると、次のプロパティが設定されます。
Mono — mono 実行ファイルへのパス (Mono JIT)
Mono バージョン — Mono バージョン
Mono X.Z — 存在する場合は
MONO_ROOT/lib/mono/X.Zに設定Mono X.Z_x64 — 存在し、Mono アーキテクチャが x64 の場合は、
MONO_ROOT/lib/mono/X.Zに設定しますMono X.Z_x86 — 存在し、Mono アーキテクチャが x86 の場合は、
MONO_ROOT/lib/mono/X.Zに設定します
Mono のインストールを自動的に検出できない場合 (たとえば、Mono フレームワークをカスタムディレクトリにインストールした場合)、 エージェント構成ファイルでこれらのプロパティを手動で設定することにより、ビルドランナーでこれらのプロパティを利用できるようにすることができます。
Windows 固有事項
Windows での Mono フレームワークの自動検出には以下の特徴があります。
Mono バージョンは
HKLM\SOFTWARE\Novell\Mono\DefaultCLRから読み込まれます。フレームワークパスは
HKLM\SOFTWARE\Novell\Mono\%MonoVersion%から抽出されます。プラットフォームアーキテクチャは
mono.exeを分析することによって検出されます。
macOS 固有事項
フレームワークは
/Library/Frameworks/Mono.framework/Versionsから自動的に検出されます。最も高いバージョンが選択されています。
フレームワークパスは
/Library/Frameworks/Mono.framework/Versions/%MonoVersion%/lib/monoから抽出されます。Mono 公式ビルドは X86 のみをサポートするため、プラットフォームアーキテクチャは x86 に固定されています。
カスタム Linux/Unix 固有事項
Unix での Mono フレームワークの自動検出には以下の特徴があります。
Mono バージョンは
pkg-config --modversion monoから読み込まれます。フレームワークパスは
pkg-config --variable=prefix monoとpkg-config --variable=libdir monoから抽出されます。プラットフォームアーキテクチャは、
PREFIX/bin/mono実行可能ファイルを分析することによって検出されます。PREFIX/binディレクトリをパスの先頭に追加し、PKG_CONFIG_PATH(pkg-config(1)で説明)をPREFIX/lib/pkgconfigで更新することにより、カスタムの場所から Mono を強制的に検出できます。