.net core 实体框架核心不兼容的DotNet核心类库

.net core 实体框架核心不兼容的DotNet核心类库,.net-core,msbuild,azure-devops,.net Core,Msbuild,Azure Devops,诚然,对于DotNet核心生态系统来说,它仍然是非常新的 我有一个解决方案,其中包含几个类库,用于将框架移植到dotnetcore 我让他们瞄准核心2.1(netcoreapp2.1) 我已通过NuGet安装了Microsoft.EntityFrameworkCore软件包(v2.2) 在本地,一切都可以正常构建和运行 生成定义(Azure DevOps)失败,因为NuGet不会提取EntityFrameworkCore包。具体而言: Package Microsoft.EntityFramew

诚然,对于DotNet核心生态系统来说,它仍然是非常新的

我有一个解决方案,其中包含几个类库,用于将框架移植到dotnetcore

我让他们瞄准核心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. 
答案似乎显而易见,但我对此感到困惑。dotnetcore支持NET标准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>

netcoreapp2.1
更新-

我升级到了dotnetcore2.2。还是有这个问题

把它弄明白了

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

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

正在运行NuGet restore-我收到了相同的错误

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

我想了解dotnetrestore在幕后做的事情与NuGet做的不同

找到了答案

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

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

正在运行NuGet restore-我收到了相同的错误

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



我想了解dotnetrestore在幕后做的事情与NuGet做的不同

你能发布你的.csproj吗?发布了其中一个文件。你运行过dotnet还原/NuGet还原吗?我知道文档中说你不需要,但我以前不得不这么做。我们的Azure DevOps在构建之前运行该任务。请问您为什么没有升级到.NET Core 2.2?我们目前正在处理一些任务,这些任务都很好。我在构建定义中有一个nuget restore任务。这就是错误发生的地方。当它为其中一个项目提取EF包时,我得到了兼容性错误。至于升级,我刚刚开始这个任务(移植)。我将尝试这样做,看看是否得到不同的结果。如果结果明显,为什么不尝试将Microsoft.EntityFrameworkCore降级到更低的版本?您可以发布您的.csproj吗?发布了其中一个文件。您是否运行了dotnet还原/NuGet还原?我知道文档中说你不需要,但我以前不得不这么做。我们的Azure DevOps在构建之前运行该任务。请问您为什么没有升级到.NET Core 2.2?我们目前正在处理一些任务,这些任务都很好。我在构建定义中有一个nuget restore任务。这就是错误发生的地方。当它为其中一个项目提取EF包时,我得到了兼容性错误。至于升级,我刚刚开始这个任务(移植)。我会试试看我们是否会得到不同的结果。如果很明显,为什么不试着将Microsoft.EntityFrameworkCore降级到更低的版本?啊,那个老把戏。是的,我们不得不在dotnet和nuget任务之间交替。为了创建NuGet软件包,我们必须使用dotnet pack并将其发布到我们的vsix服务器,我们必须使用NuGet任务。dotnet restore和NuGet restore之间的区别肯定是关于堆栈溢出的另一个问题。很高兴您能解决它。@Tubs很高兴知道。我刚刚开始部署管道,所以我很高兴您告诉我需要提前在工具之间切换。也许可以帮我省去几个小时的头痛。没问题。这当然很有趣,但两者的结合确实有效。我们有内部的NuGet和VSIX服务器,所以我们必须使用彩虹的所有组合…啊,那个旧的栗子。是的,我们不得不在dotnet和nuget任务之间交替。为了创建NuGet软件包,我们必须使用dotnet pack并将其发布到我们的vsix服务器,我们必须使用NuGet任务。dotnet restore和NuGet restore之间的区别肯定是关于堆栈溢出的另一个问题。很高兴您能解决它。@Tubs很高兴知道。我刚刚开始部署管道,所以我很高兴您告诉我需要提前在工具之间切换。也许可以帮我省去几个小时的头痛。没问题。这当然很有趣,但两者的结合确实有效。我们有内部NuGet和VSIX服务器,所以我们必须使用彩虹的所有组合。。。