[英]NuGet Restore Fails - .NET 7.0 compatibility with .NET Standard 2.0
我有一個 .NET 7.0 ASP.NET 項目的解決方案,該項目在同一解決方案中的 .NET 標准 2.0 庫中有一個項目參考。 在我的機器上所有構建和執行都很好。
我在 Azure DevOps 中有一個管道,用於構建項目並旨在將 ASP.NET 項目部署到服務器。 在構建之前,它運行任務NuGetCommand@2
以針對**/*.sln
執行 NuGet 恢復。 這是在windows-2022
Azure VM 映像上運行的。
由於以下錯誤,恢復炸彈:
Package Microsoft.OpenApi 1.4.3 is not compatible with net70 (.NETFramework,Version=v7.0). Package Microsoft.OpenApi 1.4.3 supports: netstandard2.0 (.NETStandard,Version=v2.0)
Errors in D:\a\1\s\MyApp.csproj
Project MyLibrary is not compatible with net70 (.NETFramework,Version=v7.0). Project MyLibrary supports: netstandard2.0 (.NETStandard,Version=v2.0)
這對我來說就像是在說您不能在 .NET 7.0 項目中使用 .NET 標准 2.0 庫,但兼容性文檔似乎另有說明。 這里發生了什么?
12/3更新
在調查和參考這個問題的過程中,我發現了這張票Github_Nuget_Tool_Cache_issue#16800 ,更多的開發人員對這種設計行為感到困惑。
到目前為止,唯一的解決方法似乎是額外安裝6.4.x
。
您還可以提出功能請求票以引起更多關注,以便將來對此行為進行更新。
================================================ ==============
12/1 的原始帖子
我用nuget tool installer
任務安裝了最新的nuget
版本的6.4.0.123
來確保Microsoft.OpenApi 1.4.3與.net7.0的兼容性。
================================================ ====
12月2日更新
從Microsoft.OpenAPI.1.4.3的源碼頁面來看,這個版本是為了兼容 DotNet 7.0 而設計的。
在調查過程中,我查看了調試日志,發現 nuget 還原任務在 window-2022 中使用4.x
的緩存版本。 我想這個版本肯定與 do.net 70 不兼容。
所以我想 nuget 版本可能是導致不同行為的關鍵。 (甚至可能是設計使Nuget 4.1
無法識別Microsoft.OpenAPI1.4.3
和Do.net 7.0
之間的兼容性)
參考
基於@Ceeno 的回答,但包括那些運行 YAML 管道的人。
我只是選擇獲取最新版本。
- task: NuGetToolInstaller@1
displayName: 'Update NuGet'
inputs:
checkLatest: true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.