Layanan integrasi berkelanjutan Travis CI secara resmi mendukung banyak bahasa , tetapi tidak mendukung C # atau F #.
Bisakah saya menggunakannya dengan proyek .net saya?
Layanan integrasi berkelanjutan Travis CI secara resmi mendukung banyak bahasa , tetapi tidak mendukung C # atau F #.
Bisakah saya menggunakannya dengan proyek .net saya?
Jawaban:
Travis CI sekarang mendukung C # . Mengutip dengan bebas dari halaman itu:
Gambaran
Pengaturan untuk C #, F #, dan proyek Visual Basic terlihat seperti ini:
language: csharp
solution: solution-name.sln
mono:
- latest
- 3.12.0
- 3.10.0
Naskah
Secara default, Travis akan menjalankan xbuild solution-name.sln. Xbuild adalah alat pembangunan yang dirancang untuk menjadi implementasi alat MSBuild Microsoft. Untuk menimpanya, Anda dapat mengatur atribut script seperti ini:
language: csharp
solution: solution-name.sln
script: ./build.sh
NuGet
Secara default, Travis akan menjalankan nuget restore solution-name.sln, yang mengembalikan semua paket NuGet dari file solusi Anda. Untuk menimpanya, Anda dapat mengatur atribut install seperti ini:
language: csharp
solution: solution-name.sln
install:
- sudo dosomething
- nuget restore solution-name.sln
Lihat jawaban danielnixon untuk cara resmi melakukan ini sekarang.
Itu mungkin.
Di mesin mono Anda sendiri, menggunakan terminal, cd
ke direktori solusi Anda dan menjalankan perintah xbuild
. Ini dapat bekerja secara otomatis, atau mungkin tidak, karena ada fitur yang Anda gunakan di studio visual yang memerlukan beberapa penyesuaian dalam mono.
Hal-hal yang harus diperhatikan:
.csproj
linux Anda memiliki jalur peka huruf besar kecil di mana windows tidak.export EnableNuGetPackageRestore=true
sebelum menjalankan xbuild
jika proyek Anda otomatis pulih.mozroots --import --sync
untuk menginstalnya.nuget.*
bukannya NuGet.*
referensi di .csproj Anda telah diketahui ada di berbagai versi nuget..fsproj
untuk memicu konfigurasi VS2012 pada mesin non windows dengan menambahkan '$(VisualStudioVersion)' == '11.0' Or $(OS) != 'Windows_NT'
lihat contoh .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.
Ketentuan Penggunaan Platform (disebutkan di bawah Mono 3.0.11 atau sebelumnya ) atau tingkatkan ke 3.1.2.<PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup>
atau Condition="$(OS) != 'Windows_NT'
untuk mono. Jarak tempuh Anda mungkin berbeda. Lihat contoh kerja ..ci/nunit.sh
adalah skrip shell saya sendiri untuk pengujian nunit, diperiksa ke root repo. Jadi saya dapat menginstal versi konsol nunit yang saya inginkan dengan nuget, dan mengkonfigurasi berbagai kategori termasuk / tidak termasuk juga. Jarak tempuh Anda mungkin berbeda, tetapi teknik ini harus bekerja untuk xunit dll. Atau lakukan hal Anda sendiri dengan xbuild atau palsu .
#!/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 $?
Untuk menguji mono terbaru, paling mudah menggunakan host Mac (target dengan menggunakan language:objective-c
Mono v3.1.2 dan yang lebih baru mengubah distribusi di Mac dari DMG menjadi PKG saja sehingga pemasangannya cukup sederhana. Template ini harus mendukung Perpustakaan Kelas Portabel, .NET 4.5.1, dan 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
Saya mudah menggunakan host Mac untuk menyiapkan matriks build untuk beberapa versi Mono. Lihat skrip di bawah ini
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
Dan sekarang Anda sebaiknya menggunakan travis pada proyek c # Anda.
sudo installer -pkg
. Bisakah tolong bantu saya untuk memperbaikinya? Terima kasih! lihat, travis-ci.org/Aimeast/TestForFirst/builds/13814315
language: objective-c
diperlukan untuk template tersebut, sehingga template tersebut menggunakan host OS X.
Itulah poin kuncinya - proyek harus bekerja di Mono. Ini sebagian besar berfungsi untuk proyek bergaya perpustakaan ( AWS SDK .NET adalah contoh yang baik) meskipun membutuhkan lebih banyak upaya pengembangan dan disiplin. Lingkungan pembuatan Linux tidak akan berfungsi jika Anda mengembangkan proyek untuk platform Windows seperti aplikasi WPF, layanan cloud Azure, aplikasi Windows Phone / Store, atau bahkan ASP.NET Web API.
AppVeyor CI adalah layanan integrasi berkelanjutan yang dihosting untuk platform Windows dan gratis untuk proyek sumber terbuka. Ini seperti Travis CI untuk Windows!
Anda dapat mengatur proses pembuatan untuk solusi VS.NET, proyek MSBuild kustom, PSake atau skrip PowerShell dari file batch. Selain itu, AppVeyor memiliki kerangka kerja manajemen dan penerapan artefak bawaan.
Seperti yang telah disebutkan, Travis CI memiliki dukungan beta untuk C # . Saya langsung menggunakannya. Nunit juga dapat diintegrasikan dengan sangat mudah. Berikut adalah contoh kecil dari file .travis.yml yang menjalankan tes nunit dan menandai build sebagai gagal jika setidaknya satu unit test gagal:
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
di bagian akhir. Bekerja seperti pesona.
Jika Anda ingin menggunakan Travis CI dengan F #, di GitHub, dengan FAKE dan Packet, maka F # ProjectScaffold direkomendasikan: