我有一个(私人)Github / Travis CI设置,我正在尝试验证PR并在发布分支上发布NuGet包。
这是我的.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
我使用gulp做一些额外的逻辑并构建步骤,但基本上它会正确调用所有内容..它所做的相关调用是:
dotnet restore
dotnet build **/project.json
前者成功,后者因针对net451
的项目而失败。错误看起来似乎无法找到框架集合,这是有道理的,尽管我不确定最佳解决方法:
/home/travis/build/Secret/secret/src/Secret.Sample/project.json(7,52): error NU1001: The dependency mscorlib could not be resolved.
(同样多次,也适用于System
,System.Core
,System.Xml
...)
这是一个示例project.json
:
{
"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"
}
}
}
}
我找到https://github.com/aspnet/Home/issues/1090,其中David F表示"您今天无法使用CoreCLR构建.NET Framework应用程序。" (2015年11月)。这是真的,它就这么简单吗? - 在这种情况下我应该使用Travis构建/测试,跳过net451
和Appveyor进行构建,测试和部署到NuGet?
这不是我的第一选择,但如果是这样,我怎么可以选择告诉dotnet build
跳过不支持的框架目标?
理想情况下,我只需要重新构建我的依赖项,或者在构建环境中理解frameworkAssemblies
或apt-get
其他内容。?
答案 0 :(得分:1)
dotnet build
和dotnet test
使用-f
参数跳过不受支持的框架目标,并放入您做想要的框架编译。例如,要专门编译net451
,您可以运行dotnet build -f 451
。latest
文件中使用.travis.yml
版本的mono。这种愿望取决于你的要求。如果您想看一个示例,here是一个带有a .travis.yml
configuration file的github存储库,它构建在.NET Core&适用于Linux和Mac OSX的Travis CI Mono和.NET Core&适用于Windows的Appveyor上的.NET Framework。
答案 1 :(得分:0)
以.NET Framework目标为目标,例如在Travis中net451
,您需要安装Mono。
我修改后将mono: none
更改为mono: 4.0.5
。