簡體   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