在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
链接地址: http://www.djcxy.com/p/62039.html
上一篇: Building VS 2017 MSBuild csproj Projects with Mono on Linux