Mono Support
Mono framework is an alternative framework for running .NET applications on both Windows and Unix-based platforms. For more information please refer to the Mono official site.
TeamCity supports running .NET builds using MSBuild and NAnt build runners under Mono framework as well as under .NET Frameworks.
.NET Testing Frameworks Support are also supported under Mono.
Mono Platform Detection
When a build agent starts it detects Mono installation automatically.
On each platform Mono detection is compatible with NAnt one. See NAnt.exe.config
for frameworks detection on NAnt.
Agent Properties
When Mono is detected automatically on agent-side, the following properties are set:
Mono — path to mono executable (Mono JIT)
MonoVersion — Mono version
MonoX.Z — set to
MONO_ROOT/lib/mono/X.Z
if existsMonoX.Z_x64 — set to
MONO_ROOT/lib/mono/X.Z
if exists and Mono architecture is x64MonoX.Z_x86 — set to
MONO_ROOT/lib/mono/X.Z
if exists and Mono architecture is x86
If the Mono installation cannot be detected automatically (for example, you have installed Mono framework into custom directory), you can make these properties available for build runners by setting them manually in the agent configuration file.
Windows Specifics
Automatic detection of Mono framework under Windows has the following specifics:
Mono version is read from
HKLM\SOFTWARE\Novell\Mono\DefaultCLR
Frameworks paths are extracted from
HKLM\SOFTWARE\Novell\Mono\ %\MonoVersion%
Platform architecture is detected by analyzing
mono.exe
Unix Specifics
Automatic detection of Mono framework under Unix has the following specifics:
Mono version is read from "
pkg-config --modversion mono
"Frameworks paths are extracted from "
pkg-config --variable=prefix mono
" and "pkg-config --variable=libdir mono
"Platform arch is detected by analyzing
PREFIX /bin/mono
executable.
You can force Mono to be detected from custom location by adding PREFIX /bin
directory to the beginning of the PATH
and updating PKG_CONFIG_PATH
(described in pkg-config(1)) with PREFIX /lib/pkgconfig
Supported Build Runners
Both NAnt and MSBuild runners support using Mono framework to run a build (MSBuild as xbuild in mono).