Answers:
Travis CI现在支持C#。从该页面自由引用:
总览
C#,F#和Visual Basic项目的安装程序如下所示:
language: csharp
solution: solution-name.sln
mono:
- latest
- 3.12.0
- 3.10.0
脚本
默认情况下,Travis将运行xbuild solution-name.sln。Xbuild是一个构建工具,旨在作为Microsoft MSBuild工具的实现。要覆盖此属性,可以这样设置脚本属性:
language: csharp
solution: solution-name.sln
script: ./build.sh
NuGet
默认情况下,Travis将运行nuget restore solution-name.sln,该文件将从您的解决方案文件中还原所有NuGet软件包。要覆盖此属性,可以这样设置install属性:
language: csharp
solution: solution-name.sln
install:
- sudo dosomething
- nuget restore solution-name.sln
请参阅danielnixon的答案以获取立即执行此操作的官方方法。
有可能的。
在您自己的Mono计算机上,使用终端cd
进入您的解决方案目录并运行命令xbuild
。这可能会自动运行,也可能不会自动运行,因为您在Visual Studio中使用的某些功能需要在单声道中进行一些调整。
要注意的事情:
.csproj
大小写与您的linux 匹配,而Windows则不区分大小写。export EnableNuGetPackageRestore=true
在运行之前进行操作xbuild
。mozroots --import --sync
用于安装它们。nuget.*
则NuGet.*
可以知道各种版本的nuget中都存在.csproj 而不是引用。.fsproj
以通过添加'$(VisualStudioVersion)' == '11.0' Or $(OS) != 'Windows_NT'
see example在非Windows计算机上触发VS2012配置。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.
使用平台条件(在Mono 3.0.11或更早版本中提到)或升级到3.1.2。<PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup>
或Condition="$(OS) != 'Windows_NT'
单声道。你的旅费可能会改变。请参阅工作示例。.ci/nunit.sh
是我自己的用于nunit测试的shell脚本,已签入回购协议的根目录。因此,我可以使用nuget安装我想要的nunit-console版本,并配置各种类别的包含/排除。您的里程可能会有所不同,但是此技术应适用于xunit等。或者使用xbuild或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 $?
要测试最新的Mono,最简单的方法是使用Mac主机(使用language:objective-c
Mono v3.1.2,然后将Mac上的发行版从DMG更改为PKG,因此安装非常简单。此模板应支持可移植类库.NET)。 4.5.1和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
我很容易使用Mac主机为多个版本的Mono设置构建矩阵。见下面的脚本
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
现在,您应该可以在c#项目上使用travis。
sudo installer -pkg
。能帮我解决一下吗?谢谢!参见travis-ci.org/Aimeast/TestForFirst/builds/13814315
language: objective-c
该模板是必需的,以便它使用OS X主机。
这是关键点-该项目必须在Mono上运行。尽管需要更多的开发工作和纪律,但这通常适用于库风格的项目(AWS SDK .NET是一个很好的示例)。如果您正在为Windows平台开发项目(例如WPF应用程序,Azure云服务,Windows Phone / Store应用程序甚至ASP.NET Web API),则Linux构建环境将无法正常工作。
AppVeyor CI是Windows平台的托管持续集成服务,对于开源项目免费。就像Windows的Travis CI一样!
您可以为VS.NET解决方案,自定义MSBuild项目,PSake或批处理文件的任何PowerShell脚本设置构建过程。此外,AppVeyor具有内置的工件管理和部署框架。
如前所述,Travis CI 对C#具有beta 支持。我不会直接使用。nunit也可以很容易地集成。这是一个.travis.yml文件的小示例,该文件运行nunit测试并在至少一个单元测试失败的情况下将构建标记为失败:
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
最后。奇迹般有效。
如果要将Travis CI与F#一起在GitHub上与FAKE和Packet一起使用,则建议使用F#ProjectScaffold: