不可否认,DotNet核心生态系统仍然很新。
我有一个解决方案设置,包含几个类库,用于移植到DotNet核心的框架。
我将它们定位到Core 2.1(netcoreapp2.1)。
我通过NuGet安装了Microsoft.EntityFrameworkCore包(v2.2)。
本地一切都建立并运行良好。
构建定义(Azure DevOps)失败,因为NuGet不会提取EntityFrameworkCore包。特别:
Package Microsoft.EntityFrameworkCore 2.2.2 is not compatible with netcoreapp2.1 (.NETCoreApp,Version=v2.1). Package Microsoft.EntityFrameworkCore 2.2.2 supports: netstandard2.0 (.NETStandard,Version=v2.0) One or more packages are incompatible with .NETCoreApp,Version=v2.1.
答案似乎很明显 - 但我对此感到困惑。 DotNet核心支持NET Standard 2.0。
另外 - 我在当地没有遇到这个问题。
让它更加混乱 - 如果忽略NuGet错误,构建实际上会成功。
除了netcoreapp2.1之外,我还需要做些什么来确保项目明确说明他们的目标是netstandard2.0?
这是一个有问题的项目文件。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ACME.Framework.Common\ACME.Framework.Common.csproj" />
<ProjectReference Include="..\ACME.Framework.Entity\ACME.Framework.Entity.csproj" />
</ItemGroup>
</Project>
更新 -
我升级到DotNet Core 2.2。仍然遇到这个问题。
明白了。
我的构建定义有3个任务(NuGet恢复,DotNet构建,MS测试)。
NuGet还原失败了。我能够通过下载Azure Dev Ops正在使用的相同CLI版本的NuGet(v4.1.0)来复制它。
运行NuGet还原 - 我得到了同样的错误。
将任务更改为dotnet还原可消除此问题。
我想了解一下dotnet还原正在做什么,与NuGet正在做的不同。