2016-09-15 20 views
0

私はGithub/Travis CIのプライベートセットアップがあり、PRを検証してリリースブランチにNuGetパッケージを公開しようとしています。ここでLinux(Travis CI)のnet451用.NETコアビルド/パッケージ

は私の.travis.ymlです:

language: csharp 
os: linux 
dist: trusty 
sudo: required 
env: DOTNETCORE=1 
dotnet: 1.0.0-preview2-003121 
mono: none 
before_script: 
    - npm install 
script: 
    - gulp restore && gulp build && if [ $TRAVIS_BRANCH = 'v0.2' ]; then gulp package; fi 

それがない関連の呼び出しがある..私はいくつかの追加のロジックを実行し、手順を構築するためにがぶ飲みを使用していますが、基本的にはすべてを正しく呼び出す:

dotnet restore

dotnet build **/project.json

前者は成功し、後者はtar net451を取得します。

/home/travis/build/Secret/secret/src/Secret.Sample/project.json(7,52): error NU1001: The dependency mscorlib could not be resolved.

(同じ何回もオーバーSystem.CoreSystem.XmlSystemのためにも、私は解決するために最善のアプローチにはわからないけれどもエラーは、理にかなっている、フレームワークアセンブリを見つけることができないことのように見えます...)

はここにありますサンプルproject.json:デイヴィッドFはあなたが.NET Fを構築することはできません」と表示私はhttps://github.com/aspnet/Home/issues/1090を見つけ

{ 
    "version": "0.2.0-*", 
    "description": "Description..", 
    "dependencies": { 
    "NETStandard.Library": "1.6.0", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.1.0-alpha1-22107", 
    "Microsoft.AspNetCore.Mvc": "1.1.0-alpha1-22107", 
    "Microsoft.Extensions.Configuration.Json": "1.1.0-alpha1-22107", 
    "Microsoft.Extensions.Configuration.CommandLine": "1.1.0-alpha1-22107", 
    "Microsoft.Extensions.Options": "1.1.0-alpha1-22107", 
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.1.0-alpha1-22107", 
    "Microsoft.Extensions.Logging.Console": "1.1.0-alpha1-22107", 
    "Microsoft.Extensions.Logging.Debug": "1.1.0-alpha1-22107", 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.1.0-alpha1-22107" 
    }, 
    "frameworks": { 
     "netstandard1.6": { 
     }, 
     "net451": { 
      "buildOptions": { 
       "define": [ "SAMPLEY_ON_WINDOWS" ] 
      }, 
      "dependencies": { 
       "Microsoft.Extensions.Logging.EventLog": "1.0.0" 
      } 
     } 
    } 
} 

、コアCLRを使用したアプリケーションの放棄。 (2015年11月)。その事実は真実で、それはそれほど簡単ですか? - その場合、Travisは、net451をスキップし、NuGetのビルド、テスト、およびデプロイのためにAppovectorをビルド/テストするだけでいいですか?

これは私の最初の選択ではありませんが、もしそうなら、どうすればdotnet buildに、サポートされていないフレームワークターゲットをスキップするように指示できますか?

理想的には、自分の依存関係を再設定するか、またはframeworkAssemblies、またはapt-getをビルド環境に追加する必要があります。

+0

https://github.com/dotnet/corefx/issues/9735#issuecomment-229196479が見つかりました。この情報を使用して解決できれば更新されます.. –

答えて

0

ターゲットを.NET Frameworkターゲットに設定します。 Travisのnet451には、Monoがインストールされている必要があります。

mono: nonemono: 4.0.5に変更して修正しました。

1
  1. あなたは-fパラメータを使用して、あなたはをコンパイルしたいん枠組みに置くことによってサポートされていないフレームワークの目標をスキップするdotnet builddotnet testを伝えることができます。たとえば、net451を排他的にコンパイルするには、dotnet build -f 451を実行します。
  2. .travis.ymlファイルでlatestのmonoを使用することを検討してください。特定のバージョンではなく最新のmonoのリリースと互換性があるようにしてください。その要望は、あなたの要求に依存します。
  3. .NET Core用のアプリケーションは、ローカルボックスとTravis CI上に構築することはできますが、.NET Frameworkアプリケーションでも使用できます。しかし、あなたは ".NET Platform Standard"の概念について踊る必要があります。その.NET Coreアプリケーションを従来の.NET Frameworkアプリケーションの依存関係として使用するには、.NET Core Standard 1.1用に.NET Coreアプリケーションを構築する必要があります(1.6で行ったように)。 .NET Framework 4.XXのクロスオペレーティングシステムとの互換性を完全に混乱させるには、this tableを参照してください。ただし、4.6.3はまだリリースされていないため、.NET標準1.6ライブラリを構築することはできず、従来の.NET Frameworkアプリケーションでは使用できません。しかし、あなたは.NET Framework Standard(1.5、1.4など)の下位バージョンと互換性があるようにコードを書くことができます。これらはすべて.NET Coreと互換性があり、リリースされたライブラリの依存関係として使用されますバージョンの従来の.NET Frameworkアプリケーションです。

あなたが例を参照したい場合は、hereは、LinuxおよびMac OSXの両方のためのトラヴィスCI、および.NETのコア&の.NET Framework上で.NETのコア&モノラルで構築しa .travis.yml configuration fileとgithubのリポジトリですAppveyor for Windows。