如何强制 Visual Studio 针对 .Net Core 3.1 的发布版本编译项目?

How to force Visual Studio to compile project against the release version of .Net Core 3.1?

最近我在 Visual Studio 的输出 Window 中注意到,当我编译我的解决方案时,我看到这条消息:

You are working with a preview version of the .NET Core SDK

这对我来说似乎很奇怪,因为我目前并没有故意使用 .NET Core SDK 的预览版。为了进一步探索这一点,我创建了一个新的解决方案,其中包含一个基于默认 Visual Studio "Class Library (.NET Core) 项目模板的项目。非常简单。

.

这里是proj文件的总和:

然而,当我构建这个项目时,我在输出 window 中看到“您正在使用 .NET Core SDK 的预览版”(参见第一个屏幕截图)。那是怎么回事?我使用的是 Visual Studio 的最新生产版本,目前是版本 16.8.5。

我看到 SO 问题与我的问题密切相关,但不幸的是发帖人只是问了如何让消息消失。所以接受的答案是像这样抑制消息:

<PropertyGroup>
   <SuppressNETCoreSdkPreviewMessage>true</SuppressNETCoreSdkPreviewMessage>
</PropertyGroup>

但如果编译器实际上是针对预览版 SDK 进行编译,我不想只抑制消息。我希望编译器停止使用预览 SDK 并使用 proj 文件中指定的那个。即制作netcoreapp3.1SDK.

以下是我目前安装的SDK:

那么我该如何做到这一点,为什么它还没有发生?

您可以做几件事:

  1. 告诉 Visual Studio 您不想使用预览 SDK,可以在工具 -> 选项 -> 环境 -> 预览功能下找到此选项。如果未选中 Visual Studio 将仅使用已发布的 SDK 来构建您的项目

  1. 如果您只想 Visual Studio 为某些项目使用 non-preview SDK,您可以添加 global.json file to the root folder of those projects. global.json files have many options to configure which SDK should be used to build a given project but for our purposes we just care about allowPrerelease。将其设置为 false 将确保您的项目(或解决方案)仅使用已发布的 SDK 构建。

注意:默认值在不同版本的 Visual Studio 中是不同的。如果您使用的是 Visual Studio 的预览版,它将自动使用预览版 SDK。如果您使用的是 Visual Studio 的发布版本,它应该更喜欢发布 SDK(除非选中工具 -> 选项中显示的选项)。