首页 > 解决方案 > NETSDK1045 当前的 .NET SDK 不支持面向 .NET Core 3.1 - 由缓存引起?

问题描述

我的 Visual Studio 2019 项目似乎失去了理智。昨天早上,我能够构建它,一切都很棒。然后,突然,在下午,它决定抱怨:

NETSDK1045 The current .NET SDK does not support targeting .NET Core 3.1. Either target .NET Core 2.1 or lower, or use a version of the .NET SDK that supports .NET Core 3.1

重要的是要注意,我在一天中所做的唯一更改是微不足道的。例如,我没有添加任何新包。我只是做了一点代码调整,就是这样。不过,它变得更奇怪了。

我从前一天下载了我的 Carbonite 备份,但它似乎有同样的问题。这怎么可能,因为它在那个时间点工作得很好?

然而它仍然变得陌生,因为当我今天早上打开我的 CS 文件时,我看到了这个:

截图图像

而且,尽管昨天没有发生这种情况,但现在我突然遇到了命名空间错误:

命名空间错误的屏幕截图

几个重要的注意事项:

这是包含所有 PackageReference 的完整 ItemGroup 部分:

<PackageReference Include="Azure.Storage.Queues" Version="12.4.2" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask" Version="2.1.1" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Storage" Version="4.0.2" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.3" />
<PackageReference Include="Twilio" Version="5.46.0" />

虽然我确实看到有可用的包更新,但我引用旧包版本的另外两个函数没有这个问题。

注意到包更新可用于Microsoft.NET.Sdk.Functions,我决定应用它,突然我的解决方案很高兴 -所有问题都神秘地消失了- 但是我依赖于旧 3.0.3 包的其他功能仍然构建得很好。

为什么即使在从问题甚至不存在的前一天恢复到我的代码之后,它仍然会出现这个问题?为什么这个解决方案,而且只有这个解决方案,突然决定停止工作并需要新的包版本?或者它不是特别需要那个包,而是安装过程“重置”或清除某些东西?

我能想到的唯一可能的解释是解决方案目录之外的东西导致了这种情况,这就是为什么恢复我的备份没有解决它。

这可能是由 Visual Studio 缓存中的某些内容损坏引起的吗?在这个过程的早期我应该做些什么(更容易),比如手动清除缓存?在研究这个问题之前我没有意识到有这样的缓存,所以我不知道这样做。

我对 Visual Studio 的体验是,这样的事情通常不会只发生一次,所以我想更好地了解当它再次发生时该怎么做。

PS ATTN POST REVIEWERS:虽然还有其他关于此错误的问题,但如果您仔细阅读我的帖子,您会发现我检查了几乎所有您可以检查的内容,并且这些问题的答案并不能提供解决此问题的见解。由于从备份恢复仍然没有解决这个问题,我的问题是关于这是否可能是由缓存问题引起的,以及清除缓存是否应该是我过程中的早期步骤。

标签: c#visual-studio

解决方案


如果您确定所有 SDK 都已正确安装,请global.json从您的解决方案文件夹中检查。请按照此帖子进行更正。

它可以像这样简单:

{
  "sdk": {
    "version": "3.1.xxx"  //you have to find the exact number from SDK installed folder.
  }
}

如果您的环境变得拥挤,您也可以全局设置它,但通常我们不需要这个命令:

dotnet new globaljson --sdk-version 3.0.100

推荐阅读