Muh*_*eed 9 msbuild mono travis-ci .net-core asp.net-core
我正在尝试使用最新的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)中解析,并将用于代替引用程序集.因此,您的程序集可能无法正确定位到您想要的框架.
Mono不支持基于VS 2017 MSBuild的csproj项目吗?如何构建我的项目?
据我所知,这里有两种选择:
使用本期中FrameworkPathOverride
描述的环境变量指向它们.
将Travis构建限制为仅针对.NET Core构建.根据我的经验,这简单得多.
这是Noda Time .travis.yml
文件,当我可以迁移时,它将用于Noda Time - 它至少可以说是初步的,但它确实构建了......
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
Run Code Online (Sandbox Code Playgroud)
关于此的几点说明:
dist: xenial
,但事实并非如此.(它声称环境不支持.NET Core.)我猜这会改变.dotnet run
运行测试dotnet run
(如dotnet restore
和dotnet build
),但这似乎是事情的方式.我会找一个bug报告......在任何情况下,我建议你也有一个基于Windows的CI构建来检查一切建立和适用于Windows(理想情况下测试每个你支持框架).
现在,您可以通过添加 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>
Run Code Online (Sandbox Code Playgroud)
更多信息可以在Microsoft/dotnet GitHub 页面上找到。在撰写本文时,它处于预览状态,但我发现它确实有效。我发现的唯一问题是,dotnet test
根据 xUnit 作者的说法,xUnit 项目不起作用,并且不是受支持的场景。
归档时间: |
|
查看次数: |
2816 次 |
最近记录: |