次の警告があります
Severity Code Description Project File Line Suppression State
Warning NETSDK1071 A PackageReference to 'Microsoft.AspNetCore.App' specified a Version of `2.1.6`. Specifying the version of this package is not recommended. For more information, see https://aka.ms/sdkimplicitrefs MyApi C:\Program Files\dotnet\sdk\2.2.102\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.DefaultItems.targets 153
プロジェクトファイルを編集してからnugetパッケージを追加して参照を削除しようとしましたが、これを行うと、多くの参照が正しく機能しなくなりました。
私のコンピューターに最近インストールしたsdk\2.2に言及しているエラーに気付きましたが、プロジェクトファイルにはそれに対する参照がありません。
VS2017 15.9.5を使用しています
これを回避する方法はいくつかあります。
PackageReference
を含め、Version
属性を削除すると、警告が消えます。これは、metapackageであり、(単純に言えば)フレームワークのバージョンに基づいてバージョンを取得するパッケージのタイプであるためです。 https://docs.Microsoft.com/en-us/dotnet/core/packages#metapackagesPackageReference
に追加して、警告を無効にします。詳細はこちら: https://github.com/dotnet/sdk/issues/2602新しいxUnitテストプロジェクト(.NET Core)を作成する同じような状況に遭遇しました。既存のASP.NET Core Web Appプロジェクトへの参照を追加すると、次の結果が得られました。
Microsoft.Common.CurrentVersion.targets(2106,5):警告MSB3277:の異なるバージョン間に競合が見つかりました:
- Microsoft.AspNetCore.Authorization
- Microsoft.AspNetCore.Cors
- Microsoft.AspNetCore.Diagnostics.Abstractions
- Microsoft.AspNetCore.Mvc
- Microsoft.AspNetCore.Mvc.Abstractions
- Microsoft.AspNetCore.Mvc.Core
- Microsoft.AspNetCore.Mvc.Formatters.Json
- Microsoft.AspNetCore.Mvc.RazorPages
- Microsoft.AspNetCore.Mvc.ViewFeatures
- Microsoft.AspNetCore.Razor.Runtime
- Microsoft.AspNetCore.Routing
Microsoft.AspNetCore.App
をxUnit Testプロジェクトに追加することで、これらのバージョンの競合を排除しました。
この時点で、明示的なバージョン参照の警告(NETSDK1071)。
Visual Studio内のNuGetパッケージマネージャーとパッケージマネージャーコンソールは、パッケージのインストール時にバージョン属性をMicrosoft.AspNetCore.Appに追加します。 .csprojファイルを編集して、バージョン属性を削除できます。これにより、NETSDK1071警告が削除されます。
バージョン属性を削除した場合、NuGetパッケージマネージャーは[アンインストール] + [更新]ボタンを無効にし、状態を示します: "- SDK ... "。
この時点では、警告は出ていません。
たくさんのおしゃべりとtldrがあります。この問題に関連するドキュメント。 FWIW、ここで私が強調するに値すると思ういくつかの簡潔なリソースがあります:
ASP.NET Core 2.1以降用のMicrosoft.AspNetCore.Appメタパッケージ
@nguerreraは状況を非常によくまとめました:
これは、すべてのテスト、またはWebプロジェクトへの参照を持つすべての非Webプロジェクトです。 .NET Core 2.xではWeb参照が推移的に流れなかったという点で、これは実際の回避策ではありません。追加する必要があり、バージョンなしで追加する必要があります。これにより、SDKが競合を回避するために正しいバージョンを選択できるようになります。
より良いニュース:.NET Core 3.0以降、Web参照は推移的に流れ、他の手順を実行せずにテストプロジェクトからWebプロジェクトを参照できます。これを閉じます。 2.xの設計は変更できませんが、3.0で推移的なフレームワーク参照を持つように特別に設計しました。これはそのための動機付けのシナリオでした。
そしてここにいくつかのtldrがあります。会話:
Microsoft.AspNet.Core.All#8691は対象外
Microsoft.AspNetCore.Appプロジェクト#2253によっては、テストプロジェクトでバージョンが競合します