在Linux上使用Mono构建VS 2017 MSBuild csproj项目
  我正在尝试使用最新的Mono和.NET Core 1.0.1工具(基于MSBuild的csproj工具)在Mac和Linux上使用Travis CI构建.NET Core项目。  他们的目标是netstandard1.6.1 , net45和net461 。  我从Travis CI得到的错误是: 
/usr/share/dotnet/sdk/1.0.1/Microsoft.Common.CurrentVersion.targets(1111,5):错误MSB3644:找不到框架“.NETFramework,Version = v4.5”的引用程序集。 要解决此问题,请为此框架版本安装SDK或Targeting Pack,或将您的应用程序重定向到您安装了SDK或Targeting Pack的框架版本。 请注意,程序集将从全局程序集缓存(GAC)中解析出来,并将用于代替引用程序集。 因此,您的程序集可能无法正确定位您想要的框架。
单声道不支持基于VS 2017 MSBuild的csproj项目吗? 我怎样才能让我的项目构建?
据我所知,这里有两种选择:
  按照本期中所述,使用FrameworkPathOverride环境变量指向它们。 
限制你的Travis版本只能针对.NET Core构建。 根据我的经验,这是非常简单的。
  这里是我将用于.travis.yml时间的野田时间.travis.yml文件,当我可以迁移时 - 至少可以说是初步的,但它的确建立了...... 
language: csharp
mono: none
dotnet: 1.0.1
dist: trusty
script:
  - dotnet restore src/NodaTime
  - dotnet restore src/NodaTime.Test
  - dotnet restore src/NodaTime.Serialization.Test
  - dotnet build src/NodaTime -f netstandard1.3
  - dotnet build src/NodaTime.Test -f netcoreapp1.0
  - dotnet build src/NodaTime.Serialization.Test -f netcoreapp1.0
  - dotnet run -p src/NodaTime.Test/*.csproj -f netcoreapp1.0 -- --where=cat!=Slow
  - dotnet run -p src/NodaTime.Serialization.Test/*.csproj -f netcoreapp1.0
关于此的一些注意事项:
dist: xenial上运行时,我很惊讶,但它没有。  (它声称环境不支持.NET Core。)我的猜测是这会改变。 dotnet run运行测试 dotnet run的目录名称(按照dotnet restore和dotnet build ),但似乎是事情的方式。  我会追查一份错误报告... 无论哪种情况,我都建议还要有一个基于Windows的CI构建,以检查是否所有东西都可以在Windows上构建并运行(理想情况下测试您支持的每个框架)。
截至昨天(5月5日),@dasMulli指出Mono发布了可与.NET Core搭配使用的Mono 5.0 Beta 2(5.0.0.94)! 这是他在dotnet / sdk#335上的文章。 这是最新测试版的链接
我的.travis.yml文件如下所示:
sudo: required
dist: trusty
language: csharp
solution: MySolution.sln
mono:
  - beta
dotnet: 1.0.3
install:
  - nuget restore MySolution.sln
  - dotnet restore MySolution.sln
script:
  - msbuild /t:Rebuild MySolution.sln
上一篇: Building VS 2017 MSBuild csproj Projects with Mono on Linux
