Der kontinuierliche Integrationsdienst von Travis CI unterstützt offiziell viele Sprachen , jedoch nicht C # oder F #.
Kann ich es mit meinen .net-Projekten verwenden?
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.
1. Ihr Projekt muss an Mono arbeiten
Auf Ihrem eigenen Mono-Computer mithilfe des Terminals
cd
in Ihr Lösungsverzeichnis und Ausführen des Befehlsxbuild
. 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 vonNuGet.*
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 .Mono 3.1.12, 3.2.4 und höher
Mono 3.0.12
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.Mono 3.0.11 oder früher
<PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup>
oderCondition="$(OS) != 'Windows_NT'
für Mono. Ihr Kilometerstand kann variieren. Siehe Arbeits Beispiel .Mono 2.10.X.
2. Sie können Unit-Tests über die Befehlszeile ausführen.
.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 ..ci / nunit.sh
3. Konfigurieren Sie Travis für Mono
Mono v3.8.0
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.Ziel ist sowohl Mono v2.10.X als auch v3.0.X.
Ich verwende einfach Mac-Hosts, um eine Build-Matrix für mehrere Versionen von Mono einzurichten. Siehe Skript unten
Für Linux
Und jetzt sollten Sie gut darin sein, Travis für Ihr c # -Projekt zu verwenden.
quelle
sudo installer -pkg
. Könnte mir bitte helfen, das Problem zu beheben? Danke dir! siehe travis-ci.org/Aimeast/TestForFirst/builds/13814315language: 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.
quelle
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:
quelle
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:
http://fsprojects.github.io/ProjectScaffold
quelle