在Linux上使用Mono构建VS 2017 MSBuild csproj项目

我正在尝试使用最新的Mono和.NET Core 1.0.1工具(基于MSBuild的csproj工具)在Mac和Linux上使用Travis CI构建.NET Core项目。 他们的目标是netstandard1.6.1net45net461 。 我从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
    

    关于此的一些注意事项:

  • 与早期的SDK不同,我们现在需要分别恢复每个项目 - 没有大的“最高级别的dotnet恢复”:(
  • 当它没有在dist: xenial上运行时,我很惊讶,但它没有。 (它声称环境不支持.NET Core。)我的猜测是这会改变。
  • 我们使用NUnit,目前在新SDK中测试的唯一方法是使用NUnitLite,因此使用dotnet run运行测试
  • 我有点惊讶,我不能指定dotnet run的目录名称(按照dotnet restoredotnet 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

    下一篇: Xamarin On Windows C#