El servicio de integración continua de Travis CI admite oficialmente muchos idiomas , pero no C # ni F #.
¿Puedo usarlo con mis proyectos .net?
Respuestas:
Travis CI ahora es compatible con C # . Citando generosamente de esa página:
Visión general
La configuración para proyectos de C #, F # y Visual Basic tiene este aspecto:
language: csharp
solution: solution-name.sln
mono:
- latest
- 3.12.0
- 3.10.0
Guión
De forma predeterminada, Travis ejecutará xbuild solution-name.sln. Xbuild es una herramienta de compilación diseñada para ser una implementación de la herramienta MSBuild de Microsoft. Para anular esto, puede establecer el atributo de secuencia de comandos de esta manera:
language: csharp
solution: solution-name.sln
script: ./build.sh
NuGet
De forma predeterminada, Travis ejecutará nuget restore solution-name.sln, que restaura todos los paquetes NuGet de su archivo de solución. Para anular esto, puede establecer el atributo de instalación de esta manera:
language: csharp
solution: solution-name.sln
install:
- sudo dosomething
- nuget restore solution-name.sln
Ver la respuesta de danielnixon para conocer la forma oficial de hacer esto ahora.
Es posible.
En su propia máquina mono, usando la terminal, cd
en el directorio de su solución y ejecutando el comando xbuild
. Esto puede funcionar automáticamente, o puede que no, ya que hay funciones que usó en Visual Studio que necesitan algunos ajustes en mono.
Cosas a tener en cuenta:
.csproj
linux y tenga rutas que distingan entre mayúsculas y minúsculas donde Windows no.export EnableNuGetPackageRestore=true
antes de correrxbuild
si tu proyecto se restaura automáticamente.mozroots --import --sync
para instalarlos.nuget.*
lugar deNuGet.*
referencias en su .csproj, se sabe que existen en varias versiones de nuget..fsproj
para activar la configuración de VS2012 en máquinas que no sean de Windows agregando '$(VisualStudioVersion)' == '11.0' Or $(OS) != 'Windows_NT'
see 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.
condiciones de la plataforma de uso (mencionadas en Mono 3.0.11 o anterior ) o actualice a 3.1.2.<PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup>
o Condition="$(OS) != 'Windows_NT'
para mono. Su experiencia puede ser diferente. Ver ejemplo de trabajo ..ci/nunit.sh
es mi propio script de shell para pruebas nunit, registrado en la raíz del repositorio. Entonces puedo instalar la versión de nunit-console que quiero con nuget y configurar también varias inclusiones / exclusiones de categorías. Su kilometraje puede variar, pero esta técnica debería funcionar para xunit, etc. O haga lo suyo con xbuild o 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 $?
Para probar el último mono, es más fácil usar hosts de Mac (apunte usando language:objective-c
Mono v3.1.2 y luego cambió la distribución en una Mac de un DMG a solo un PKG, por lo que la instalación es bastante simple. Esta plantilla debe admitir bibliotecas de clases portátiles, .NET 4.5.1 y 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
Es fácil de usar hosts Mac para configurar una matriz de compilación para múltiples versiones de Mono. Ver guión a continuación
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
Y ahora debería estar listo para usar travis en su proyecto de c #.
sudo installer -pkg
. ¿Podría ayudarme a solucionarlo? ¡Gracias! ver, travis-ci.org/Aimeast/TestForFirst/builds/13814315
language: objective-c
es necesario para esa plantilla, de modo que utilice el host OS X.
Ese es el punto clave: el proyecto debe funcionar en Mono. Esto funciona principalmente para proyectos de estilo de biblioteca ( AWS SDK .NET es un buen ejemplo), aunque requiere más esfuerzos de desarrollo y disciplina. El entorno de construcción de Linux no funcionará si está desarrollando un proyecto para la plataforma Windows, como la aplicación WPF, el servicio en la nube Azure, la aplicación Windows Phone / Store o incluso la API web ASP.NET.
AppVeyor CI es un servicio de integración continua alojado para la plataforma Windows y es gratuito para proyectos de código abierto. ¡Es como Travis CI para Windows!
Puede configurar el proceso de compilación para la solución VS.NET, el proyecto personalizado de MSBuild, PSake o cualquier script de PowerShell de un archivo por lotes. Además, AppVeyor tiene un marco de implementación y administración de artefactos incorporado.
Como ya se mencionó, Travis CI tiene soporte beta para C # . Es sencillo de usar. Además, nunit se puede integrar muy fácilmente. Aquí hay un pequeño ejemplo de un archivo .travis.yml que ejecuta pruebas nunit y marca la compilación como fallida si falla al menos una prueba unitaria:
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
al final. Funciona de maravilla.
Si desea utilizar Travis CI con F #, en GitHub, con FAKE y Packet, se recomienda F # ProjectScaffold: