.NETソリューションを.NET Core 1.1から.NET Core 2.1に更新しようとしています。内部にいくつかの.NET Coreおよび.NET標準プロジェクトがあり、それらは相互に参照し、別のNuGetパッケージを参照します。 「dotnet resore」および「dotnet build」コマンドを更新した後、Visual Studioからソリューションをビルドしようとすると、次のエラーが表示されます。
エラーNU1605パッケージのダウングレードが検出されました:2.1.3から2.1.0へのMicrosoft.NETCore.App。プロジェクトから直接パッケージを参照して、別のバージョンを選択します。
そして実際、私のプロジェクトのいくつかは、Microsoft.NETCore.App v2.1.0とv.2.1.3へのSDK参照を持っていることがわかります。 RuntimeFrameworkVersionを設定し、このパッケージを依存関係に明示的に追加しても機能しません。
どうすれば対処できますか?
PD: dotnet --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
PD: .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パッケージを更新することにより、この問題を解決しました。
私もこの問題を抱えていました。最終的にそれを修正したのは、「プログラム」コントロールパネルから.NET SDK 2.1.3をアンインストールすることでした。または、基本的に、プロジェクトで使用しようとしていた関連SDKライブラリの新しいバージョンをアンインストールする必要がありました。
この問題の私のバージョン(と思う)は、曖昧な参照を持つユニットテストプロジェクトと一緒にJenkinsビルドサーバーにインストールされた実際の.NET Coreバージョンの組み合わせによって引き起こされました。
理想的な世界では、ドットネットはAspNetCoreのcsprojに記載されているバージョンを期待していないことを理解しています-ビルド中に最大限の柔軟性を提供します:
<PackageReference Include="Microsoft.AspNetCore.App" />
ただし、ビルドサーバーでは、メインプロジェクト(最初)をコンパイルしたときに、AspNetCoreバージョンとして2.1.6を使用することを選択しました。次に、テストプロジェクトをコンパイルしようとします。そのプロジェクトの最小バージョンは「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ビルドサーバーですべてがビルドされています!