首页 > 解决方案 > 在也使用 netstandard2.1 的项目中升级到 .NET Core 3 并未在 Rider 中构建

问题描述

我在 macOS 上运行,我正在处理的项目刚刚从 .NET Core 2 升级到 .NET Core 3。问题是我无法再在 Rider 中构建我的项目。如果我尝试使用 dotnet build 在终端中构建它,则构建成功。在我的项目中,有一些使用 netstandard2 的子项目,但这应该不是问题(因为它在终端中工作)。我收到以下错误消息:

Project1 is not compatible with netcoreapp3.0 (.NETCoreApp,Version=v3.0). Project2 supports: netstandard2.1 (.NETStandard,Version=v2.1)

我尝试添加一个 global.json 文件,该文件指定我使用的是 .NET Core 版本 3,但它没有帮助。

如果我在终端中运行一次 dotnet build,那么 Rider 的新构建将成功。所以一切正常,但总是先在终端中构建只是很烦人。

dotnet --info 的输出: dotnet --info

.NET Core SDK (reflecting any global.json):
 Version:   3.0.100
 Commit:    04339c3a26

Runtime Environment:
 OS Name:     Mac OS X
 OS Version:  10.14
 OS Platform: Darwin
 RID:         osx.10.14-x64
 Base Path:   /usr/local/share/dotnet/sdk/3.0.100/

Host (useful for support):
  Version: 3.0.0
  Commit:  7d57652f33

.NET Core SDKs installed:
  2.2.300 [/usr/local/share/dotnet/sdk]
  2.2.401 [/usr/local/share/dotnet/sdk]
  2.2.402 [/usr/local/share/dotnet/sdk]
  3.0.100 [/usr/local/share/dotnet/sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.2.5 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.6 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.7 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.2.5 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.6 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.7 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.0.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.2.5 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.6 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.7 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.0.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

标签: .net-corerider.net-core-3.0

解决方案


我发现问题出在 Rider 中。解决方法是将PackageReference 还原引擎(在File > Settings > Build, Execution, Deployment > NuGet中)更改为MSBuild

骑士截图

该问题将在 Rider 的后续版本中修复,因此建议在版本发布后切换回EmbeddedMSBuildEmbedded的区别:

MSBuild 只是调用外部 MSBuild 任务;Embedded 在 Rider 进程中直接调用 NuGet API。嵌入式应该工作得更快,它提供了额外的日志,当恢复失败时很有用

问题的原因:

[...] 因为 Rider 2019.2 EAP2 在内部仍然使用 NuGet 4.9;此版本没有适当支持 .NET Core 3.0 / .NET Standard 2.1。在 Rider 2019.2 RTM 中,我们将 NuGet 的内部版本升级到 5.1。

报价和截图来源: https ://youtrack.jetbrains.com/issue/RIDER-29888


推荐阅读