c# - 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 文件时,我看到了这个:
而且,尽管昨天没有发生这种情况,但现在我突然遇到了命名空间错误:
几个重要的注意事项:
- 是的,我重启了
- 我还有另外两个构建得很好的 Azure 函数项目。它们都针对 .NET Core 3.1。
- 我检查了这些
.sln
文件,并没有发现任何与此不同的文件。 - 在比较
.csproj
文件时,唯一的区别是这个文件有 2 个额外的包引用:Azure.Storage.Queues
和Microsoft.Azure.WebJobs.Extensions.DurableTask
. 不过,它们一直都在那里——昨天它们没有任何改变。 - 我安装了 VS 2017 和 VS 2019 (v16.7.1)。请注意,我的 VS 2019 版本 16.7.1 符合规范。
- 我按照这些说明进行操作,没有发现路径有任何问题,没有 global.json 等。我没想到,因为我的其他解决方案仍然可以正常构建,所以无论有什么问题,它都不是系统范围的,而是项目-具体的。
这是包含所有 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:虽然还有其他关于此错误的问题,但如果您仔细阅读我的帖子,您会发现我检查了几乎所有您可以检查的内容,并且这些问题的答案并不能提供解决此问题的见解。由于从备份恢复仍然没有解决这个问题,我的问题是关于这是否可能是由缓存问题引起的,以及清除缓存是否应该是我过程中的早期步骤。
解决方案
如果您确定所有 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
推荐阅读
- java - 我的图像在 PDF 文档中返回为空白
- android - 如何使用 RXJava 调用的响应结果作为另一个 RXJava 函数中的 if 语句的条件?
- .net-core - 加载所需库 hostpolicy.dll 时出错
- php - Mpdf 删除标题和正文内容之间的空格
- r - 您如何准备纵向数据以进行各种规格的生存分析?
- excel - 使用 VBScript 从 TXT 格式文件填充现有的 XLSX
- javascript - 如何使用javascript提取属性值
- java - 确定我的代码是否包含硬编码的 SQL 查询?
- karate - 空手道 + Appium,命令 driver.startRecordingScreen() 不起作用
- java - 计算一个点是否在多边形内