Travis CI sürekli entegrasyon hizmeti resmi olarak birçok dili destekler ancak C # veya F # desteklemez.
.Net projelerimle kullanabilir miyim?
Yanıtlar:
Travis CI artık C # destekliyor . Bu sayfadan özgürce alıntı yapmak:
Genel Bakış
C #, F # ve Visual Basic projelerinin kurulumu şu şekilde görünür:
language: csharp
solution: solution-name.sln
mono:
- latest
- 3.12.0
- 3.10.0
Senaryo
Travis, varsayılan olarak xbuild solution-name.sln'yi çalıştıracaktır. Xbuild, Microsoft'un MSBuild aracı için bir uygulama olarak tasarlanmış bir derleme aracıdır. Bunu geçersiz kılmak için script niteliğini şu şekilde ayarlayabilirsiniz:
language: csharp
solution: solution-name.sln
script: ./build.sh
NuGet
Varsayılan olarak, Travis, tüm NuGet paketlerini çözüm dosyanızdan geri yükleyen nuget restore solution-name.sln çalıştırır. Bunu geçersiz kılmak için install özniteliğini şu şekilde ayarlayabilirsiniz:
language: csharp
solution: solution-name.sln
install:
- sudo dosomething
- nuget restore solution-name.sln
Danielnixon'un cevabına bakınBunu yapmanın resmi yolu için .
Bu mümkün.
Kendi mono makinenizde, terminali kullanarak cd
çözüm dizininize girin ve komutu çalıştırın xbuild
. Bu otomatik olarak çalışabilir veya çalışmayabilir, çünkü görsel stüdyoda kullandığınız ve monoda biraz ince ayar yapılması gereken özellikler vardır.
Dikkat edilecek şeyler:
.csproj
büyük / küçük harflerinin pencerelerin olmadığı büyük / küçük harfe duyarlı yollara sahip .export EnableNuGetPackageRestore=true
öncexbuild
, projeniz otomatik olarak geri .mozroots --import --sync
bunları yüklemek için .nuget.*
,NuGet.*
, .csproj referanslar nuget'in çeşitli sürümlerinde var olduğu bilinmektedir..fsproj
ekleyerek olmayan pencereler makinelerde VS2012 yapılandırmayı tetiklemek için '$(VisualStudioVersion)' == '11.0' Or $(OS) != 'Windows_NT'
bkz örneği .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.
altında belirtilen Kullanım Platformu Koşulları ( Mono 3.0.11 veya daha önceki yükseltin.<PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup>
veya Condition="$(OS) != 'Windows_NT'
mono için. Kilometreniz değişebilir. Çalışma örneğine bakın ..ci/nunit.sh
nunit testi için kendi kabuk betiğim, deponun kök dizinine kaydedildi. Bu yüzden nuget ile istediğim nunit-console sürümünü kurabilirim ve çeşitli kategorileri dahil etme / hariç tutmayı da yapılandırabilirim. Kilometreniz değişebilir, ancak bu teknik xunit vb. İçin çalışmalıdır. Veya xbuild veya sahte ile kendi işinizi yapın .
#!/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 $?
En son mono'yu test etmek için Mac ana bilgisayarlarını kullanmak en kolay yoldur ( language:objective-c
Mono v3.1.2 kullanarak hedefleyin ve daha sonra bir Mac'teki dağıtımı bir DMG'den yalnızca bir PKG'ye değiştirdi, böylece yükleme oldukça basittir. Bu şablon Portable Class Libraries, .NET'i desteklemelidir. 4.5.1 ve 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
Mono'nun birden çok sürümü için bir yapı matrisi oluşturmak üzere Mac ana bilgisayarlarını kullanmak çok kolay. Aşağıdaki komut dosyasına bakı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
Ve şimdi c # projenizde travis kullanmaya gitmeniz iyi olur.
sudo installer -pkg
. Lütfen düzeltmeme yardım eder misiniz? Teşekkür ederim! bkz. travis-ci.org/Aimeast/TestForFirst/builds/13814315
language: objective-c
OS X ana bilgisayarını kullanması için bu şablon için gereklidir.
Kilit nokta bu - proje Mono üzerinde çalışmalıdır. Bu, çoğunlukla kitaplık tarzı projeler için işe yarar ( AWS SDK .NET iyi bir örnektir), ancak daha fazla geliştirme çabası ve disiplin gerektirir. WPF uygulaması, Azure bulut hizmeti, Windows Phone / Store uygulaması veya hatta ASP.NET Web API gibi Windows platformu için bir proje geliştiriyorsanız, Linux oluşturma ortamı çalışmayacaktır.
AppVeyor CI , Windows platformu için barındırılan bir sürekli entegrasyon hizmetidir ve açık kaynaklı projeler için ücretsizdir. Windows için Travis CI gibi!
VS.NET çözümü, özel MSBuild projesi, PSake veya herhangi bir PowerShell betiği toplu iş dosyası için derleme işlemi kurabilirsiniz. Ayrıca, AppVeyor yerleşik yapı yönetimi ve dağıtım çerçevesine sahiptir.
Daha önce de belirtildiği gibi, Travis CI , C # için beta desteğine sahiptir . Kullanması çok kolay. Ayrıca nunit çok kolay entegre edilebilir. En az bir birim testi başarısız olursa, nunit testlerini çalıştıran ve yapıyı başarısız olarak işaretleyen .travis.yml dosyasının küçük bir örneğini burada bulabilirsiniz:
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
sonunda oldu. Tıkır tıkır çalışıyor.
Travis CI'yi F # ile, GitHub'da, FAKE ve Packet ile kullanmak istiyorsanız, F # ProjectScaffold önerilir: