Antworten:
Travis CI unterstützt jetzt C # . Frei von dieser Seite zitieren:
Überblick
Das Setup für C # -, F # - und Visual Basic-Projekte sieht folgendermaßen aus:
language: csharp
solution: solution-name.sln
mono:
- latest
- 3.12.0
- 3.10.0
Skript
Standardmäßig führt Travis xbuild solution-name.sln aus. Xbuild ist ein Build-Tool, das als Implementierung für das MSBuild-Tool von Microsoft entwickelt wurde. Um dies zu überschreiben, können Sie das Skriptattribut wie folgt festlegen:
language: csharp
solution: solution-name.sln
script: ./build.sh
NuGet
Standardmäßig führt Travis nuget restore solution-name.sln aus, wodurch alle NuGet-Pakete aus Ihrer Lösungsdatei wiederhergestellt werden. Um dies zu überschreiben, können Sie das Installationsattribut wie folgt festlegen:
language: csharp
solution: solution-name.sln
install:
- sudo dosomething
- nuget restore solution-name.sln
Siehe Danielnixons Antwort für den offiziellen Weg, dies jetzt zu tun.
Es ist möglich.
Auf Ihrem eigenen Mono-Computer mithilfe des Terminals cd
in Ihr Lösungsverzeichnis und Ausführen des Befehls xbuild
. Dies funktioniert möglicherweise automatisch oder nicht, da es Funktionen gibt, die Sie in Visual Studio verwendet haben und die in Mono angepasst werden müssen.
Dinge, auf die Sie achten sollten:
.csproj
Dateifehler vorliegen , überprüfen Sie, ob der Fall von Dateinamen mit Ihrem Linux übereinstimmt. Dabei handelt es sich um Pfade mit Groß- und Kleinschreibung, bei denen Windows dies nicht tut.export EnableNuGetPackageRestore=true
vor dem Ausführen ausgeführt werden, xbuild
wenn Ihr Projekt automatisch wiederhergestellt wird.mozroots --import --sync
, um sie zu installieren.nuget.*
anstelle von NuGet.*
Verweisen in Ihrer .csproj in verschiedenen Versionen von Nuget vorhanden ist..fsproj
, um die VS2012-Konfiguration auf Nicht-Windows-Computern auszulösen, indem '$(VisualStudioVersion)' == '11.0' Or $(OS) != 'Windows_NT'
Sie das folgende Beispiel hinzufügen .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.
Nutzungsplattformbedingungen (unter Mono 3.0.11 oder früher erwähnt ) oder aktualisieren Sie auf 3.1.2.<PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup>
oder Condition="$(OS) != 'Windows_NT'
für Mono. Ihr Kilometerstand kann variieren. Siehe Arbeits Beispiel ..ci/nunit.sh
ist mein eigenes Shell-Skript für Nunit-Tests, das in die Wurzel des Repos eingecheckt ist. So kann ich die gewünschte Nunit-Konsolenversion mit Nuget installieren und auch verschiedene Ein- / Ausschlüsse von Kategorien konfigurieren. Ihr Kilometerstand kann variieren, aber diese Technik sollte für xunit usw. funktionieren. Oder machen Sie Ihr eigenes Ding mit xbuild oder 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 $?
Zum Testen des neuesten Mono ist es am einfachsten, Mac-Hosts zu verwenden (Ziel mithilfe von language:objective-c
Mono v3.1.2 und später wurde die Verteilung auf einem Mac von einem DMG in ein PKG geändert, sodass die Installation recht einfach ist. Diese Vorlage sollte Portable Class Libraries, .NET, unterstützen 4.5.1 und 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
Ich verwende einfach Mac-Hosts, um eine Build-Matrix für mehrere Versionen von Mono einzurichten. Siehe Skript unten
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
Und jetzt sollten Sie gut darin sein, Travis für Ihr c # -Projekt zu verwenden.
sudo installer -pkg
. Könnte mir bitte helfen, das Problem zu beheben? Danke dir! siehe travis-ci.org/Aimeast/TestForFirst/builds/13814315
language: objective-c
ist für diese Vorlage erforderlich, damit sie den OS X-Host verwendet.
Das ist der entscheidende Punkt - das Projekt muss auf Mono funktionieren. Dies funktioniert hauptsächlich für Projekte im Bibliotheksstil ( AWS SDK .NET ist ein gutes Beispiel), erfordert jedoch mehr Entwicklungsaufwand und Disziplin. Die Linux-Gebäudeumgebung funktioniert nicht, wenn Sie ein Projekt für eine Windows-Plattform wie eine WPF-Anwendung, einen Azure-Clouddienst, eine Windows Phone / Store-App oder sogar eine ASP.NET-Web-API entwickeln.
AppVeyor CI ist ein gehosteter kontinuierlicher Integrationsdienst für die Windows-Plattform und für Open Source-Projekte kostenlos. Es ist wie Travis CI für Windows!
Sie können den Erstellungsprozess für die VS.NET-Lösung, ein benutzerdefiniertes MSBuild-Projekt, PSake oder ein beliebiges PowerShell-Skript für Batchdateien einrichten. Außerdem verfügt AppVeyor über ein integriertes Framework für die Verwaltung und Bereitstellung von Artefakten.
Wie bereits erwähnt, bietet Travis CI Beta- Unterstützung für C # . Ich bin einfach zu bedienen. Auch nunit kann sehr einfach integriert werden. Hier ist ein kleines Beispiel für eine .travis.yml-Datei, die nunit-Tests ausführt und den Build als fehlgeschlagen markiert, wenn mindestens ein Komponententest fehlschlägt:
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
sudo: required
am Ende. Klappt wunderbar.
Wenn Sie Travis CI mit F #, auf GitHub, mit FAKE und Packet verwenden möchten, wird das F # ProjectScaffold empfohlen: