Respostas:
Travis CI agora oferece suporte a C # . Citando livremente dessa página:
Visão geral
A configuração para projetos C #, F # e Visual Basic é semelhante a esta:
language: csharp
solution: solution-name.sln
mono:
- latest
- 3.12.0
- 3.10.0
Roteiro
Por padrão, o Travis executará xbuild solution-name.sln. Xbuild é uma ferramenta de construção projetada para ser uma implementação da ferramenta MSBuild da Microsoft. Para substituir isso, você pode definir o atributo de script assim:
language: csharp
solution: solution-name.sln
script: ./build.sh
NuGet
Por padrão, o Travis executará nuget restore solution-name.sln, que restaura todos os pacotes NuGet de seu arquivo de solução. Para substituir isso, você pode definir o atributo de instalação assim:
language: csharp
solution: solution-name.sln
install:
- sudo dosomething
- nuget restore solution-name.sln
Veja a resposta de danielnixon para saber a maneira oficial de fazer isso agora.
É possível.
Em sua própria máquina mono, usando o terminal, cd
em seu diretório de solução e executando o comando xbuild
. Isso pode funcionar automaticamente ou não, pois há recursos que você usou no Visual Studio que precisam de alguns ajustes em mono.
Coisas a serem observadas:
.csproj
linux tem caminhos que diferenciam maiúsculas de minúsculas, onde o Windows não.export EnableNuGetPackageRestore=true
antes de executar xbuild
se o projeto for restaurado automaticamente.mozroots --import --sync
para instalá-los.nuget.*
vez de NuGet.*
referências em seu .csproj, sabe-se que existem em várias versões do nuget..fsproj
para acionar a configuração do VS2012 em máquinas não Windows adicionando '$(VisualStudioVersion)' == '11.0' Or $(OS) != 'Windows_NT'
ver exemplo .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.
Condições de uso da plataforma (mencionadas em Mono 3.0.11 ou anterior ) ou atualize para 3.1.2.<PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup>
ou Condition="$(OS) != 'Windows_NT'
para mono. Sua milhagem pode variar. Veja o exemplo de trabalho ..ci/nunit.sh
é meu próprio script de shell para teste de nunit, verificado na raiz do repo. Portanto, posso instalar a versão do nunit-console que desejo com o nuget e configurar várias categorias de inclusão / exclusão. Sua milhagem pode variar, mas esta técnica deve funcionar para xunit etc. Ou faça suas próprias coisas com xbuild ou 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 testar o mono mais recente, é mais fácil usar hosts Mac (alvo usando language:objective-c
Mono v3.1.2 e posterior distribuição alterada em um Mac de um DMG para apenas um PKG para que a instalação seja bastante simples. Este modelo deve suportar bibliotecas de classes portáteis, .NET 4.5.1 e 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
É fácil usar hosts Mac para configurar uma matriz de construção para várias versões do Mono. Veja o roteiro abaixo
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
E agora você deve estar pronto para usar travis em seu projeto c #.
sudo installer -pkg
. Pode me ajudar a consertar isso? Obrigado! consulte travis-ci.org/Aimeast/TestForFirst/builds/13814315
language: objective-c
é necessário para esse modelo, para que ele use o host OS X.
Esse é o ponto chave - o projeto deve funcionar em Mono. Isso funciona principalmente para projetos do tipo biblioteca ( AWS SDK .NET é um bom exemplo), embora exija mais esforços de desenvolvimento e disciplina. O ambiente de construção do Linux não funcionará se você estiver desenvolvendo um projeto para a plataforma Windows, como aplicativo WPF, serviço de nuvem Azure, aplicativo Windows Phone / Store ou mesmo ASP.NET Web API.
AppVeyor CI é um serviço de integração contínua hospedado para a plataforma Windows e é gratuito para projetos de código aberto. É como o Travis CI para Windows!
Você pode configurar o processo de construção para a solução VS.NET, projeto MSBuild personalizado, PSake ou qualquer script PowerShell de arquivo em lote. Além disso, o AppVeyor possui uma estrutura integrada de gerenciamento e implantação de artefatos.
Como já mencionado, Travis CI tem suporte beta para C # . É fácil de usar. Além disso, o nunit pode ser integrado facilmente. Aqui está um pequeno exemplo de um arquivo .travis.yml que executa testes nunit e marca o build como com falha se pelo menos um teste de unidade falhar:
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
no final. Funciona como um encanto.
Se você deseja usar o Travis CI com F #, no GitHub, com FAKE e Packet, o F # ProjectScaffold é recomendado: