繁体   English   中英

NETSDK1045 当前的 .NET SDK 不支持面向 .NET Core 3.1 - 由缓存引起?

[英]NETSDK1045 The current .NET SDK does not support targeting .NET Core 3.1 - Caused by Cache?

我的 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 文件时,我看到了这个:

截图图片

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

命名空间错误的屏幕截图

几个重要的注意事项:

  • 是的,我重启了
  • 我还有两个其他 Azure 函数项目构建得很好。 它们都针对 .NET Core 3.1。
  • 我检查了.sln文件,并没有看到与此文件有任何不同的任何内容。
  • 在比较.csproj文件时,唯一的区别是这个文件有 2 个额外的包引用: Azure.Storage.QueuesMicrosoft.Azure.WebJobs.Extensions.DurableTask 不过,这些一直都在那里——昨天没有任何改变。
  • 我安装了 VS 2017 和 VS 2019 (v16.7.1)。 请注意,我的 VS 2019 版本 16.7.1 符合规范。
  • 我按照这些说明操作,没有发现路径有任何问题,没有 global.json 等。我没想到,因为我的其他解决方案仍然可以正常构建,所以无论有什么问题,它都不是系统范围的,而是项目-具体的。

这是包含所有 PackageReferences 的完整 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 帖子审阅者:虽然还有关于此错误的其他问题,但如果您仔细阅读我的帖子,您会发现我检查了您可以检查的几乎所有内容,而这些问题的答案并没有提供解决此问题的见解。 由于从备份恢复仍然没有解决这个问题,我的问题特别是关于这是否可能是由缓存问题引起的,以及清除缓存是否应该是我过程中的早期步骤。

如果您确定所有 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM