92 votes

Comment puis-je utiliser Travis-CI avec C# F#

Travis CI continue de service de l'intégration prend officiellement en charge de nombreuses langues, mais pas en C# F#.

Puis-je utiliser avec mon .projets net?

150voto

jbtule Points 11159

Il est possible.

1. Votre projet a besoin de travailler sur Mono

Sur votre propre mono machine, en utilisant le terminal, cd dans votre solution de répertoire et de l'exécution de la commande xbuild. Cela peut automatiquement de travail, ou il ne peut pas, comme il ya des éléments que vous avez utilisé dans visual studio qui a besoin de quelques ajustements en mono.

Choses à regarder dehors pour:

  • Fichiers manquants erreurs, assurez-vous que le cas des noms de fichiers correspondant à votre .csproj linux est sensible à la casse des chemins où windows ne le fait pas.
  • Nuget vous oblige à export EnableNuGetPackageRestore=true avant l'exécution d' xbuild si votre projet auto restaure.
  • Votre mono instance peut ne pas avoir de racine de certificats SSL, utilisez mozroots --import --sync pour les installer.
  • Aussi, si vous remarquez qu'il manque des fichier des erreurs, nuget.* au lieu de NuGet.* références dans votre .csproj ont pu exister dans les différentes versions de nuget.
  • Il y a un bug dans la version 2.5 de nuget du fichier cible basée sur les espaces dans la .fichier cible, solution ici
  • Pour FSharp 3.0 soutien dont vous avez besoin mono 3.0.X ou plus tard (et peut-être besoin de construire de la source, mais installé par défaut sur Mac OS X)
  • Pour FSharp projets de VS2013, vous pouvez avoir besoin de modifier votre .fsproj pour le déclenchement de l'VS2012 configuration non sur des machines windows en ajoutant '$(VisualStudioVersion)' == '11.0' Or $(OS) != 'Windows_NT' voir exemple.

Mono 3.1.12, 3.2.4 et plus tard

  • Mono 3.1.2, 3.2.4 et, plus tard, ont pcl soutien, mais aussi le manque PCL erreurs. Cherchez l'erreur répertoriés ci-dessous sous Mono 3.0.12 car il ne comprend que le cadre de travail suivant les références:
    • v4.0, Profile136 .NET Framework 4, Silverlight 5, Windows Phone 8, les applications du Windows Store (Windows 8)
    • v4.0, Profile14 .NET Framework 4, Silverlight 5
    • v4.0, Profile147 .NET Framework 4.0.3, Silverlight 5, Windows Phone 8, les applications du Windows Store (Windows 8)
    • v4.0, Profile158 .NET Framework 4.5, Silverlight 5, Windows Phone 8, les applications du Windows Store (Windows 8)
    • v4.0, Profile19 .NET Framework 4.0.3, Silverlight 5
    • v4.0, Profile24 .NET Framework 4.5, Silverlight 5
    • v4.0, Profile37 .NET Framework 4, Silverlight 5, les applications du Windows Store (Windows 8)
    • v4.0, Profile42 .NET Framework 4.0.3, Silverlight 5, les applications du Windows Store (Windows 8)
    • v4.0, Profile47 .NET Framework 4.5, Silverlight 5, les applications du Windows Store (Windows 8)
    • v4.0, Profile5 .NET Framework 4, les applications du Windows Store (Windows 8)
    • v4.0, Profile6 .NET Framework 4.0.3, les applications du Windows Store (Windows 8)
    • v4.5, Profile49 .NET Framework 4.5, Windows Phone 8
    • v4.5, Profile7 .NET Framework 4.5, les applications du Windows Store (Windows 8)
    • v4.5, Profile78 .NET Framework 4.5, Windows Phone 8, les applications du Windows Store (Windows 8)

Mono 3.0.12

  • Mono 3.0.12 a les objectifs pour les Bibliothèques de Classe, mais pas la référence assemblées. Recherchez 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. d'Utilisation de la Plateforme de Conditions (mentionné sous Mono 3.0.11 ou version antérieure) ou une mise à jour 3.1.2.

Mono 3.0.11 ou plus tôt

  • Manquant la Cible des erreurs, si ce n'est pas nuget, c'est probablement parce que vous utilisez une bibliothèque de classes Portable cible ou d'autres cibles qui n'existe pas. Si votre projet peut compiler pour .net 4.0, vous pouvez modifier votre .csproj ou .fsproj, de sorte que sur .net, il s'appuie portable et sur mono qu'il construit pour .net 4.0. essentiellement par la part des choses dans conditionnelle propriété groupes <PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup> ou Condition="$(OS) != 'Windows_NT' pour les mono. Votre kilométrage peut varier. Voir travail exemple.

Mono 2.10.X

  • Aussi Mono v2.10 l'est pas, c'est Microsoft.Créer des classes qui Nuget besoins, vous pouvez copier le v3.0.X dll, ce qui est très faible, de l' .nuget répertoire. (Je l'ai utilisé ici)

2. Être en mesure d'exécuter les tests unitaires à partir de la ligne de commande.

.ci/nunit.sh est mon propre script shell pour nunit de test, de vérification dans la racine de l'opération. Donc, je peux installer le nunit-version de la console, je veux avec nuget, et configurer divers include/exclut des catégories trop. Votre kilométrage peut varier, mais cette technique devrait fonctionner pour xunit etc. Ou faire votre propre chose avec xbuild ou faux.

.ci/nunit.sh

#!/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 $?

3. Configurer Travis pour mono

Mono v3.8.0

Pour tester les dernières mono il est plus facile d'utiliser les hôtes Mac (cible en utilisant language:objective-c Mono v3.1.2 et plus tard changé de distribution sur un Mac à partir d'un DMG pour juste un PKG si l'installation est assez simple. Ce modèle devrait soutenir Portable Bibliothèques de Classe, .NET 4.5.1, et 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

Pour Cibler à la fois Mono v2.10.X et v3.0.X

J'facile à utiliser Mac des hôtes à l'installation d'une version de la matrice pour plusieurs versions de Mono. Voir le script ci-dessous

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

Pour Les Mono 2.10.X, il est facile à utiliser linux

dans votre .travis.yml nous commençons avec

language: c

comme il est plutôt simple modèle.

puis l'installation de l'environnement pour les mono avec apt-get

before_install:
  # Make sure mono is installed,
  # pipe stdout to dev/null because qq is still too chatty
  - sudo apt-get update -qq > /dev/null
  - sudo apt-get install -qq mono-devel > /dev/null
  - mozroots --import --sync

si nous allons utiliser nuget, ajouter la variable d'environnement

env:
  - EnableNuGetPackageRestore=true

enfin, construire et tester des

script:
  - xbuild 
  - .ci/nunit.sh Tests/bin/Debug/Tests.dll

Et maintenant, vous devriez être bon d'aller à l'utilisation de travis sur votre projet c#.

25voto

Feodor Fitsner Points 306

C'est le point essentiel - le projet doit travailler sur Mono. La plupart du temps cela fonctionne pour la bibliothèque de style des projets (SDK AWS .NET est un bon exemple) mais nécessite plus d'efforts de développement et de la discipline. Linux de l'environnement des bâtiments ne fonctionnera pas si vous êtes l'élaboration d'un projet de plate-forme Windows comme application WPF, Azure cloud, Windows Phone/app Store ou même ASP.NET l'API Web.

AppVeyor CI est hébergé intégration continue service de la plate-forme Windows et il est gratuit pour les projets open source. C'est comme Travis CI pour Windows!

Vous pouvez configurer les processus de génération pour VS.NET solution personnalisée projet MSBuild, PSake ou aucun script PowerShell de fichier de commandes. En outre, AppVeyor a intégré dans les artefacts de la gestion et de l'infrastructure de déploiement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X