实体框架核心不兼容DotNet Core类库

时间:2019-02-25 15:22:12

标签: .net-core msbuild azure-devops

对于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。仍然遇到这个问题。

enter image description here

1 个答案:

答案 0 :(得分:1)

知道了。

我的构建定义有3个任务(NuGet还原,DotNet构建,MS测试)。

NuGet还原失败。通过下载与Azure Dev Ops使用的相同的NuGet CLI版本(v4.1.0),我现在能够复制它。

运行NuGet恢复-我遇到相同的错误。

将任务更改为dotnet还原可消除此问题。

我想了解点网还原在幕后的作用与NuGet的不同。