web-dev-qa-db-ja.com

警告NETSDK1071 'Microsoft.AspNetCore.App'へのPackageReferenceがバージョン `2.1.6`を指定しました

次の警告があります

 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を使用しています

42
Kirsten Greed

これを回避する方法はいくつかあります。

42
KommandantKeen

新しい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

XUnitプロジェクトでMicrosoft.AspNetCore.App NuGetパッケージへの参照が見つからなかった場合、どのように競合が発生するのか理解できませんでした。

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によっては、テストプロジェクトでバージョンが競合します

4
RandyDaddis