92

Travis CI 継続的インテグレーション サービスは、多くの言語を公式にサポートしていますが、C# や F# はサポートしていません。

.net プロジェクトで使用できますか?

4

5 に答える 5

151

これを今すぐ行う公式の方法については、ダニエルニクソンの回答を参照してください。

可能です。

1. プロジェクトは Mono で動作する必要があります

独自の mono マシンで、ターミナルを使用cdしてソリューション ディレクトリに移動し、コマンドを実行しますxbuild。これは自動的に機能する場合もあれば、機能しない場合もあります。これは、ビジュアル スタジオで使用した機能を mono で微調整する必要があるためです。

注意事項:

  • Missing files エラー。ファイル名の大文字と小文字が一致していることを確認してください.csproj。Windows では大文字と小文字を区別しないパスが Linux にはあります。
  • プロジェクトが自動復元される場合、export EnableNuGetPackageRestore=true実行する前にNuget を実行する必要があります。xbuild
  • モノ インスタンスにルート SSL 証明書がない可能性があります。使用mozroots --import --syncしてインストールしてください。
  • また、ファイルが見つからないというエラーが表示される場合は、.csproj 内nuget.*の参照の代わりにNuGet.*、さまざまなバージョンの nuget に存在することがわかっています。
  • 2.5 nuget のターゲット ファイルには、.target ファイルの空白に基づくバグがあります。回避策はこちら
  • FSharp 3.0 をサポートするには、mono 3.0.X 以降が必要です (ソースからビルドする必要がある場合もありますが、Mac OS X ではデフォルトでインストールされます)。
  • VS2013 からの FSharp プロジェクトの場合、see example.fsprojを追加して、Windows 以外のマシンで VS2012 構成をトリガーするように編集する必要がある場合があります。'$(VisualStudioVersion)' == '11.0' Or $(OS) != 'Windows_NT'

Mono 3.1.12、3.2.4 以降

  • Mono 3.1.2、3.2.4 以降では pcl がサポートされていますが、PCL が見つからないというエラーが発生する可能性もあります。以下のフレームワーク参照のみが含まれている ため、 Mono 3.0.12の下にリストされているエラーに注意してください。
    • v4.0、Profile136 .NET Framework 4、Silverlight 5、Windows Phone 8、Windows ストア アプリ (Windows 8)
    • v4.0、Profile14 .NET Framework 4、Silverlight 5
    • v4.0、Profile147 .NET Framework 4.0.3、Silverlight 5、Windows Phone 8、Windows ストア アプリ (Windows 8)
    • v4.0、Profile158 .NET Framework 4.5、Silverlight 5、Windows Phone 8、Windows ストア アプリ (Windows 8)
    • v4.0、Profile19 .NET Framework 4.0.3、Silverlight 5
    • v4.0、Profile24 .NET Framework 4.5、Silverlight 5
    • v4.0、Profile37 .NET Framework 4、Silverlight 5、Windows ストア アプリ (Windows 8)
    • v4.0、Profile42 .NET Framework 4.0.3、Silverlight 5、Windows ストア アプリ (Windows 8)
    • v4.0、Profile47 .NET Framework 4.5、Silverlight 5、Windows ストア アプリ (Windows 8)
    • v4.0、Profile5 .NET Framework 4、Windows ストア アプリ (Windows 8)
    • v4.0、Profile6 .NET Framework 4.0.3、Windows ストア アプリ (Windows 8)
    • v4.5、Profile49 .NET Framework 4.5、Windows Phone 8
    • v4.5、Profile7 .NET Framework 4.5、Windows ストア アプリ (Windows 8)
    • v4.5、Profile78 .NET Framework 4.5、Windows Phone 8、Windows ストア アプリ (Windows 8)

モノ 3.0.12

  • Mono 3.0.12 には、ポータブル クラス ライブラリのターゲットがありますが、参照アセンブリはありません。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.Use Platform Conditions (Mono 3.0.11 以前で言及)を探すか、3.1.2 にアップグレードします。

Mono 3.0.11 以前

  • Missing Target エラー。nuget でない場合は、ポータブル クラス ライブラリ ターゲットまたは存在しないその他のターゲットを使用している可能性があります。プロジェクトが .net 4.0 用にコンパイルできる場合は、.csproj または .fsproj を変更して、.net ではポータブルにビルドし、mono では .net 4.0 用にビルドできます。<PropertyGroup Condition="$(OS) == 'Windows_NT'"> <TargetFrameworkProfile>Profile46</TargetFrameworkProfile> </PropertyGroup>基本的に、物事を条件付きプロパティグループまたはモノに分けることによってCondition="$(OS) != 'Windows_NT'。あなたのマイレージは異なる場合があります。作業を参照してください。

モノ 2.10.X

  • また、Mono v2.10 には、Nuget が必要とする Microsoft.Build クラスの一部がありません。非常に小さい v3.0.X dll を .nuget ディレクトリにコピーできます。(私はここでそれを使いました)

2. コマンド ラインから単体テストを実行できる。

.ci/nunit.shリポジトリのルートにチェックインされた、nunit テスト用の私自身のシェル スクリプトです。したがって、nuget で必要な nunit-console バージョンをインストールし、カテゴリのさまざまな包含/除外も構成できます。走行距離は異なる場合がありますが、この手法は xunit などで機能するはずです。または、 xbuild またはfakeを使用して独自のことを行ってください。

.ci/nunit.sh

#!/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 $?

3. Travis を mono 用に設定する

モノ v3.8.0

最新の mono をテストするには、Mac ホストを使用するのが最も簡単です ( language:objective-cMono 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

Mono v2.10.X と v3.0.X の両方をターゲットにするには

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

Linux の場合

  • 新しいベータ版の定義については、以下の回答を参照してください。

これで、C# プロジェクトで travis を使用できるようになりました。

于 2013-05-25T16:48:39.120 に答える
25

これが重要なポイントです。プロジェクトは Mono 上で動作する必要があります。これはほとんどの場合、ライブラリ スタイルのプロジェクト ( AWS SDK .NETが良い例です) で機能しますが、より多くの開発努力と規律が必要です。WPF アプリケーション、Azure クラウド サービス、Windows Phone/ストア アプリ、さらには ASP.NET Web API などの Windows プラットフォーム向けのプロジェクトを開発している場合、Linux ビルド環境は機能しません。

AppVeyor CIは、Windows プラットフォーム向けのホストされた継続的インテグレーション サービスであり、オープン ソース プロジェクトでは無料です。それは Windows 用の Travis CI のようなものです!

VS.NET ソリューション、カスタム MSBuild プロジェクト、PSake、またはバッチ ファイルの任意の PowerShell スクリプトのビルド プロセスをセットアップできます。さらに、AppVeyor にはアーティファクトの管理と展開のフレームワークが組み込まれています。

于 2013-10-03T16:42:15.747 に答える
17

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
于 2014-12-11T00:01:46.687 に答える
8

既に述べたように、Travis CIはC# のベータ版をサポートしています。私は簡単に使用できません。また、nunit は非常に簡単に統合できます。nunit テストを実行し、少なくとも 1 つの単体テストが失敗した場合にビルドを失敗としてマークする .travis.yml ファイルの小さな例を次に示します。

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
于 2014-12-19T12:32:01.737 に答える
1

Travis CI を F#、GitHub、FAKE および Packet で使用する場合は、F# ProjectScaffold をお勧めします。

http://fsprojects.github.io/ProjectScaffold

于 2016-03-10T20:31:02.877 に答える