使用 Blazor Asp.NetCore 托管模板时获取“NETSDK1045 当前的 .NET SDK 不支持 .NET Core 3.0 作为目标”

Posted

技术标签:

【中文标题】使用 Blazor Asp.NetCore 托管模板时获取“NETSDK1045 当前的 .NET SDK 不支持 .NET Core 3.0 作为目标”【英文标题】:Getting "NETSDK1045 The current .NET SDK does not support .NET Core 3.0 as a target" when using Blazor Asp.NetCore hosted template 【发布时间】:2019-09-08 13:12:48 【问题描述】:

我已经安装了 .NetCore 3.0 的预览版并尝试在 Visual Studio 2019 中运行 blazor 模板 Blazor (ASP.NET Core hosted)

发生的错误如下:

NETSDK1045 当前的 .NET SDK 不支持将 .NET Core 3.0 作为目标。以 .NET Core 2.2 或更低版本为目标,或者使用支持 .NET Core 3.0 的 .NET SDK 版本。

【问题讨论】:

【参考方案1】:

在这几天里,我不得不在许多不同的开发机器/容器上克服这个问题:最终,我发现不少于 6 个不同的原因可能导致这种错误:

    缺少 .NET Core 3 SDK(x86 或 x64) VS2019 中未启用 .NET Core SDK 预览支持 VS2017 代替 VS2019 PATH 环境变量中的 SDK 路径错误 MSBuildSDKsPath 环境变量中的 SDK 路径错误 项目的 global.json 文件中的 SDK 版本错误

这些场景的变通方法很容易理解,您基本上必须安装正确的 SDK 或删除“有问题的”SDK 引用。不过,我已尽力将它们全部记录在我博客上的this post 中。

【讨论】:

宾果游戏。尽管错误说我没有 3.1,但 实际 错误是 global.json 仍然明确命名为 3.0。 在我来之前看过你的博客。我在 Azure 构建管道上遇到了这个问题。 我也在 Azure 构建管道上遇到了这种情况。有谁知道如何最好地解决这个问题?【参考方案2】:

在comment 之后,我设法通过在 x64 版本之外安装 x86 版本的 .NET Core 3.0 来解决问题。重新启动 Visual Studio (2019) 后构建工作正常。

【讨论】:

【参考方案3】:

对我来说,解决方案是删除路径变量MSBuildSDKsPath - 因为探索了预览 sdks,我在某些时候声明了该变量来修复另一个 sdk 错误 - 似乎强制设置了使用的版本。所以在我的情况下,它被设置为 3.0.100 并在尝试使用 3.1.300 时导致错误

【讨论】:

【参考方案4】:

我遇到了同样的错误,并通过选中“使用 .NET Core SDK 的预览(需要重新启动)”选项来解决它。 打开工具 > 选项并尝试查看“预览功能”或“.Net Core”,具体取决于您的 Visual Studio 版本。 小心 VS 更新,他们可以禁用它。

【讨论】:

【参考方案5】:

这是一个非常 hacky 感觉的解决方案,但至少它有效。假设您已经安装了 3.0.100-rc1-014190 的 SDK。它按预期显示在 dotnet --list-sdks 中,但 Visual Studio 似乎仍未检测到,并且在尝试从 dotnet CLI 构建或测试任何内容时,您会遇到相同的 NETSDK1405 错误。

查看您的 dotnet SDK 安装目录(通常为 C:\Program Files\dotnet\sdk)。您应该会在其中看到您的预览版 SDK。创建副本或重命名现有文件夹以删除预览版本后缀。例如,3.0.100-rc1-014190 将改为 3.0.100,如下所示:

这样做使 .Net Core 3 预览支持最终在 VS2019 Preview 4 和 dotnet CLI 中为我工作。

【讨论】:

【参考方案6】:

对我来说,这就像在 Visual Studio 2019 中启用预览一样简单。不幸的是,我认为大多数展示如何执行此操作的帖子都已过时。我终于看到了这个堆栈溢出帖子How to enable .NET Core 3 preview SDK in VS2019?他们移动了复选框,默认情况下它没有打开。

【讨论】:

【参考方案7】:

这是一个令人沮丧的问题,在对 VS 进行了所有更新后仍然无法安装,我将其追踪到环境变量。尝试删除 MSBuildSDKsPath 看看是否能解决您的问题。

【讨论】:

以上是关于使用 Blazor Asp.NetCore 托管模板时获取“NETSDK1045 当前的 .NET SDK 不支持 .NET Core 3.0 作为目标”的主要内容,如果未能解决你的问题,请参考以下文章

不使用 Blazor WebAssembly 托管的 CSS 的热重载

具有个人帐户和托管 ASP.NET Core 的 Blazor WebAssembly 应用程序 - IIS - SQLLocalDB 15.0 找不到指定的资源语言 ID

将 Blazor 服务器配置为托管 WebAPI

.NET 5学习笔记(11)—— Host Blazor WebAssembly in a Windows Service

使用 Blazor Webassembly 和 ASP.NET Core 安全文件下载

Blazor WebAssembly Server 项目如何引用客户端索引?