Travis CI継続的統合サービスは、多くの 言語 を公式にサポートしていますが、C#またはF#はサポートしていません。
.netプロジェクトで使用できますか?
Travis CIを今すぐ C#をサポート 。そのページから自由に引用:
概要
C#、F#、およびVisual Basicプロジェクトのセットアップは次のようになります。
language: csharp
solution: solution-name.sln
mono:
- latest
- 3.12.0
- 3.10.0
脚本
デフォルトでは、Travisはxbuild solution-name.slnを実行します。 Xbuildは、MicrosoftのMSBuildツールの実装となるように設計されたビルドツールです。これをオーバーライドするには、次のようにスクリプト属性を設定できます。
language: csharp
solution: solution-name.sln
script: ./build.sh
NuGet
デフォルトでは、Travisはnuget restore solution-name.slnを実行し、ソリューションファイルからすべてのNuGetパッケージを復元します。これをオーバーライドするには、次のようにインストール属性を設定できます。
language: csharp
solution: solution-name.sln
install:
- Sudo dosomething
- nuget restore solution-name.sln
これを公式に行う方法については、 danielnixonの答え を参照してください。
可能です。
自分のモノラルマシンで、ターミナルを使用してcd
をソリューションディレクトリに移動し、コマンドxbuild
を実行します。 Visual Studioで使用していたモノの調整が必要な機能があるため、これは自動的に機能する場合と機能しない場合があります。
注目すべきこと:
.csproj
_に一致することを確認してください。xbuild
を実行する前に_export EnableNuGetPackageRestore=true
_を要求します。mozroots --import --sync
_を使用してインストールしてください。nuget.*
_参照の代わりに_NuGet.*
_がさまざまなバージョンのnugetに存在することがわかっています。'$(VisualStudioVersion)' == '11.0' Or $(OS) != 'Windows_NT'
を追加して、Windows以外のマシンでVS2012構成をトリガーするために_.fsproj
_を編集する必要がある場合があります example を参照してください。Unable to find framework corresponding to the target framework moniker '.NETPortable,Version=v4.0,Profile=ProfileX'. Framework Assembly references will be resolved from the GAC, which might not be the intended behavior.
_ Use Platform Conditions(Mono 3.0.11以前で説明)を探すか、3.1.2にアップグレードします。<PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup>
またはCondition="$(OS) != 'Windows_NT'
に分けることにより。あなたのマイレージは異なる場合があります。作業を参照してください 例 。_.ci/nunit.sh
_は、nunitテスト用の独自のシェルスクリプトで、レポのルートにチェックインされています。したがって、nugetで必要なnunit-consoleバージョンをインストールし、カテゴリのさまざまな包含/除外を構成することもできます。マイレージは異なる場合がありますが、この手法はxunitなどで機能するはずです。または、xbuildまたは fake を使用して独自の操作を行います。
_#!/bin/sh -x
mono --runtime=v4.0 .nuget/NuGet.exe install NUnit.Runners -Version 2.6.1 -o packages
runTest(){
mono --runtime=v4.0 packages/NUnit.Runners.2.6.1/tools/nunit-console.exe -noxml -nodots -labels -stoponerror $@
if [ $? -ne 0 ]
then
exit 1
fi
}
#This is the call that runs the tests and adds tweakable arguments.
#In this case I'm excluding tests I categorized for performance.
runTest $1 -exclude=Performance
exit $?
_
最新のモノをテストするには、Macホストを使用するのが最も簡単です(_language:objective-c
_ Mono v3.1.2を使用することにより、MacのディストリビューションをDMGからPKGに変更したため、インストールは非常に簡単です。このテンプレートはPortableをサポートする必要があります。クラスライブラリ、.NET 4.5.1、およびFSharp 3.1。
_language: objective-c
env:
global:
- EnableNuGetPackageRestore=true
matrix:
- MONO_VERSION="3.8.0"
before_install:
- wget "http://download.mono-project.com/archive/${MONO_VERSION}/macos-10-x86/MonoFramework-MDK-${MONO_VERSION}.macos10.xamarin.x86.pkg"
- Sudo installer -pkg "MonoFramework-MDK-${MONO_VERSION}.macos10.xamarin.x86.pkg" -target /
script:
- xbuild
- .ci/nunit.sh Tests/bin/Debug/Tests.dll
_
Macホストを使用して、Monoの複数のバージョンのビルドマトリックスを簡単にセットアップできます。以下のスクリプトを参照してください
_language: objective-c
env:
global:
- EnableNuGetPackageRestore=true
matrix:
- MONO_VER="2.10.11"
- MONO_VER="3.0.12"
before_install:
- wget "http://download.mono-project.com/archive/${MONO_VER}/macos-10-x86/MonoFramework-MDK-${MONO_VER}.macos10.xamarin.x86.dmg"
- hdid "MonoFramework-MDK-${MONO_VER}.macos10.xamarin.x86.dmg"
- Sudo installer -pkg "/Volumes/Mono Framework MDK ${MONO_VER}/MonoFramework-MDK-${MONO_VER}.macos10.xamarin.x86.pkg" -target /
script:
- xbuild
- .ci/nunit.sh Tests/bin/Debug/Tests.dll
_
これで、C#プロジェクトでtravisを使用する準備が整いました。
それが重要なポイントです-プロジェクトはMonoで動作する必要があります。これは主にライブラリスタイルのプロジェクトで機能します( AWS SDK .NET は良い例です)が、より多くの開発努力と規律が必要です。 WPFアプリケーション、Azureクラウドサービス、Windows Phone/Storeアプリ、またはASP.NET Web APIなどのWindowsプラットフォーム用のプロジェクトを開発している場合、Linuxビルド環境は機能しません。
AppVeyor CI は、Windowsプラットフォーム向けのホストされた継続的統合サービスであり、オープンソースプロジェクトでは無料です。 Windows用のTravis CIのようなものです!
VS.NETソリューション、カスタムMSBuildプロジェクト、PSake、またはバッチファイルのPowerShellスクリプトのビルドプロセスをセットアップできます。また、AppVeyorには、アーティファクト管理および展開フレームワークが組み込まれています。
すでに述べたように、 Travis CI にはベータ版があります C#のサポート 。使用するのは簡単ではありません。また、nunitは非常に簡単に統合できます。以下に、nunitテストを実行し、少なくとも1つのユニットテストが失敗した場合にビルドを失敗としてマークする.travis.ymlファイルの小さな例を示します。
language: csharp
solution: ./src/yoursolution.sln
install:
- Sudo apt-get install nunit-console
- nuget restore ./src/yoursolution.sln
script:
- xbuild ./src/yoursolution.sln
- nunit-console ./src/SomeLibrary.Tests/bin/Debug/SomeLibrary.Tests.dll
Travis CIをF#、GitHub、FAKEおよびPacketで使用する場合は、F#ProjectScaffoldをお勧めします。