我有.NET Core项目,我试图在Mac和Linux上使用最新的Mono和.NET Core 1.0.1工具(基于MSBuild的csproj工具)构建它们。它们的目标是netstandard1.6.1
,net45
和net461
。我从Travis CI得到的错误是:
Mono是否不支持基于VS 2017 MSBuild的csproj项目?我该如何使我的项目能够构建?
我有.NET Core项目,我试图在Mac和Linux上使用最新的Mono和.NET Core 1.0.1工具(基于MSBuild的csproj工具)构建它们。它们的目标是netstandard1.6.1
,net45
和net461
。我从Travis CI得到的错误是:
Mono是否不支持基于VS 2017 MSBuild的csproj项目?我该如何使我的项目能够构建?
据我所知,这里有两个选项:
使用FrameworkPathOverride
环境变量来指向它们,具体描述请参见此问题.
限制您的Travis构建仅针对.NET Core构建。在我的经验中,这显着更简单。
这是我将在Noda Time上使用的.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上构建和工作,并最好测试您支持的每个框架。
- wget -q https://packages.microsoft.com/config/ubuntu/14.04/packages-microsoft-prod.deb
- sudo dpkg -i packages-microsoft-prod.deb
- wget -q http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/gcc-5-base_5.4.0-6ubuntu1~16.04.9_amd64.deb
- sudo dpkg -i gcc-5-base_5.4.0-6ubuntu1~16.04.9_amd64.deb
- wget -q http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.9_amd64.deb
- sudo dpkg -i libstdc++6_5.4.0-6ubuntu1~16.04.9_amd64.deb
- wget -q http://security.ubuntu.com/ubuntu/pool/main/i/icu/libicu55_55.1-7ubuntu0.4_amd64.deb
- sudo dpkg -i libicu55_55.1-7ubuntu0.4_amd64.deb
- sudo apt-get install apt-transport-https
- sudo apt-get install -y libicu55
- sudo apt-get install dotnet-runtime-deps-2.1
- sudo apt-get install dotnet-runtime-2.1
- sudo apt-get install aspnetcore-runtime-2.1
- sudo apt-get install dotnet-sdk-2.1
- msbuild /p:Configuration=Release Solution.sln
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
latest
,这是目前的版本5.2.0。我的构建仍然无法构建针对netstandard和net45的.NET Core项目 https://travis-ci.org/RehanSaeed/Serilog.Exceptions/jobs/266445606 - Muhammad Rehan Saeed现在,您可以通过添加 NuGet 包,在 Linux 上使用 Mono 构建新样式的 csproj 项目:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup Label="Build">
<OutputType>Exe</OutputType>
<TargetFramework>net472</TargetFramework>
</PropertyGroup>
<ItemGroup Label="Package References">
<PackageReference
Include="Microsoft.NETFramework.ReferenceAssemblies"
PrivateAssets="All"
Version="1.0.0-preview.2" />
</ItemGroup>
</Project>
更多信息可以在Microsoft/dotnet的GitHub页面上找到。在撰写本文时,它处于预览阶段,但我发现它确实可以工作。我发现唯一的问题是dotnet test
与xUnit项目不兼容,并且根据xUnit作者的说法,这不是一个支持的场景。