[英]Detected package downgrade: Microsoft.NETCore.App from 2.1.3 to 2.1.0
我嘗試將我的 .net 解決方案從 .NET Core 1.1 更新到 .NET Core 2.1。 我里面有幾個 .NET 核心和 .NET 標准項目,它們相互引用並引用另一個 NuGet 包。 更新“do.net resore”和“do.net build”命令后工作正常,但是當我嘗試從 visual studio 構建我的解決方案時,出現此錯誤:
錯誤 NU1605 檢測到 package 降級:Microsoft.NETCore.App 從 2.1.3 到 2.1.0。 直接從項目引用 package 到 select 一個不同的版本。
我看到我的一些項目確實有 SDK 對 Microsoft.NETCore.App v2.1.0 的引用,其中一些是 v.2.1.3。 設置 RuntimeFrameworkVersion 並將此 package 添加到依賴項中顯式不起作用。
我該如何處理?
UPD: do.net --info:
.NET Core SDK (reflecting any global.json): Version: 2.1.401 Commit: 91b1c13032
Runtime Environment: OS Name: Windows OS Version: 10.0.17134 OS Platform: Windows RID: win10-x64 Base Path: C:\Program Files\dotnet\sdk\2.1.401\
Host (useful for support): Version: 2.1.3 Commit: 124038c13e
.NET Core SDKs installed:
1.1.10 [C:\Program Files\dotnet\sdk]
2.0.0 [C:\Program Files\dotnet\sdk]
2.1.4 [C:\Program Files\dotnet\sdk]
2.1.100 [C:\Program Files\dotnet\sdk]
2.1.202 [C:\Program Files\dotnet\sdk]
2.1.400 [C:\Program Files\dotnet\sdk]
2.1.401 [C:\Program Files\dotnet\sdk]
.NET Core runtimes installed: Microsoft.AspNetCore.All 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All] Microsoft.AspNetCore.All 2.1.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All] Microsoft.AspNetCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 2.1.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.NETCore.App
1.0.12 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 1.1.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App
2.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 2.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App
2.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App
2.1.3 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
To install additional .NET Core runtimes or SDKs: https://aka.ms/dotnet-download
UPD:如果我從 .csproj 文件中刪除此行,問題就會以某種方式消失:
<RuntimeIdentifier>win7-x64</RuntimeIdentifier>
能有關系嗎?
我和你有類似的問題。 指定運行時標識符時無法發布我的項目。
我開始工作的解決方案是將以下行添加到 *.csproj
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
添加該行后,項目將正確發布。
以下鏈接引用了 2.1.1 和 2.1.0 之間的降級問題,但解決方案的工作原理相同。
在我的 Windows 機器上將 .net core SDK 從 .net core 2.1.0 更新到 .net core 2.2.0 后,我遇到了同樣的問題。 我無法構建項目,並在檢測到包降級時出現構建錯誤:Microsoft.AspNetCore.Razor.Design 從 2.2.0 到 2.1.0。
我已經通過更新 Microsoft.AspNetCore.Razor.Design 的 nuget 包解決了這個問題
在添加對MySQL.Data
的引用后,我剛剛遇到了同樣的問題。
唯一的解決方案是在 .csproj 文件中明確定義受影響引用的版本:
<PackageReference Include="System.Diagnostics.Debug" Version="4.3.0" />
<PackageReference Include="System.Runtime.Extensions" Version="4.3.0" />
<PackageReference Include="System.Globalization" Version="4.3.0" />
<PackageReference Include="System.Threading" Version="4.3.0" />
<PackageReference Include="System.Net.NameResolution" Version="4.3.0" />
<PackageReference Include="System.IO.FileSystem" Version="4.3.0" />
我也有這個問題。 最終為我修復的是從“程序”控制面板卸載 .NET SDK 2.1.3。 或者我基本上不得不卸載我的項目試圖使用的任何更高版本的相關 SDK 庫。
我的這個問題版本(我認為)是由安裝在 Jenkins 構建服務器上的實際 .NET Core 版本與具有模糊引用的單元測試項目的組合引起的。
我知道,在理想的世界中,dotnet 不希望在 csproj 中聲明 AspNetCore 的版本 - 在構建過程中提供最大的靈活性:
<PackageReference Include="Microsoft.AspNetCore.App" />
但是,在構建服務器上編譯主項目時(第一次),它選擇使用 2.1.6 作為 AspNetCore 版本。 然后它嘗試編譯測試項目,並且該項目的最低版本為“2.1.1”,因此構建過程會嘗試降級,然后在構建失敗時中止構建。
我從測試項目中刪除了“2.1.1”最低版本,但隨后測試項目不會在本地構建,因為它無法明確解決依賴關系。 在多次 NuGet 包升級/降級之后沒有任何樂趣,所以選擇強制“2.1.6”最低版本以便與構建服務器保持一致。
這仍然無法在本地正確解析所有依賴項,最終也強制使用 NetCore 的最低版本:
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.6" />
<PackageReference Include="Microsoft.NetCore.App" Version="2.1.6" />
現在一切都在本地和 Jenkins 構建服務器上構建!
安裝新版本的 .Net Core(2.0 到 2.1)后,我也遇到了這個問題。 下面的鏈接給了我一個導致問題的提示。
https://github.com/dotnet/cli/issues/9433
我的解決方案是將項目的目標框架更改為最新安裝的 .Net Core 版本。
Project Properties > Application > Target Framework
對於未來的讀者。
一大早,我的代碼就在構建中。
然后我開始收到此錯誤:
Error NU1605 Detected package downgrade: Microsoft.Extensions.Logging from 3.1.1 to 2.1.1. Reference the package directly from the project to select a different version.
我在 2 個程序集 csprojs 上得到了它。
MyCompany.MyProject.SomeLibraryONE
MyCompany.MyProject.SomeLibraryTWO
所以當然,我開始追蹤“Microsoft.Extensions.Logging”。
但后來我想起了“今天早上它起作用了”,我回溯了我的變化。
我發現了一個新包(nuget import)添加進來
MyCompany.MyProject.SomeLibraryTHREE
(一和二引用了三)
這是“新”行:
<PackageReference Include="Microsoft.Extensions.Http" Version="3.1.1" />
所以我看了又看,但這是導入“Microsoft.Extensions.Http”包的唯一地方。
做什么?
從記憶中,我只是記得我有很多“3.1.0”包導入,但沒有 3.1.1。
其他包導入的示例(例如):
<PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.0" />
長話短說………………我更改了新的包導入(新導入是我的代碼損壞的主要嫌疑人)……並將其更改為與“3.1 .0 世界”。
所以我現在有了這個。
<PackageReference Include="Microsoft.Extensions.Http" Version="3.1.0" />
現在一切正常。
因此,(實際)錯誤可能是實際發生的事情的紅鯡魚。
希望您正在使用源代碼控制,並且可以“反向”執行它。
只是為了完成這個......這是奇怪的部分:
\.nuget\packages\microsoft.extensions.http\3.1.1\lib\netcoreapp3.1\Microsoft.Extensions.Http.dll
我打開了這個文件。
它引用了
// Microsoft.Extensions.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
// Assembly reference loading information:
// Info: Success - Loading from: C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.0\Microsoft.Extensions.Logging.dll
不是,它是“3.1.0\\Microsoft.Extensions.Logging.dll”。 那么它是什么破東西???? (誰知道?)
所以雖然這對我來說沒有意義..............我上面展示的確實解決了這個問題。
去搞清楚。
希望能幫助某人。
我在 .NET 5 上,看起來這個錯誤仍然存在。
問題:無法將 EntityFramework 包從 5.0.5 更新到 5.0.8。
使固定:
我發現的一種快速解決方法是從“解決方案”>“引用”>“包”中刪除所選包(在我的情況下為 5.0.5 版)的所有包引用。 右鍵單擊並刪除每個。
現在轉到 nuget 包管理器並再次添加這些相同的包(現在版本將是 5.0.8)。
建造
我有一個非常相似的錯誤,解決方案是將其添加到 my.csproj
<ItemGroup>
<PackageReference Include="Microsoft.NETCore.Targets" Version="3.0.0" PrivateAssets="all" />
</ItemGroup>
我嘗試了2.1.1的版本,它對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.