Visual Studio 2017の依存関係で黄色の警告三角形は何を意味しますか?


100

PCLライブラリを新しい.Net標準ライブラリに変換しました。次に示す依存関係にいくつかの黄色の警告三角形があります。

ここに画像の説明を入力してください

変換中に、依存関係を含むすべてのnugetパッケージが持ち込まれたため、重複する可能性があります。

黄色の警告三角形が何を表しているかを知るにはどうすればよいですか?

編集

ビルドログ:

ビルド中にNuGetがパッケージを復元しないようにするには、Visual Studioの[オプション]ダイアログを開き、[パッケージマネージャー]ノードをクリックして、[ビルド中に不足しているパッケージのダウンロードをNuGetに許可する]チェックボックスをオフにします。NU1605:検出されたパッケージのダウングレード:NUnit 3.8.1から2.6.4。プロジェクトから直接パッケージを参照して、別のバージョンを選択します。
MyProj.UI.Tests-> MyProj.Core.Tests-> NUnit(> = 3.8.1)
MyProj.UI.Tests-> NUnit(> = 2.6.4)NU1605:検出されたパッケージのダウングレード:NUnit 3.8.1から2.6.4。プロジェクトから直接パッケージを参照して、別のバージョンを選択します。MyProj.UI.Tests.iOS-> MyProj.UI.Tests-> MyProj.Core.Tests-> NUnit(> = 3.8.1)MyProj.UI.Tests.iOS-> NUnit(> = 2.6.4)NU1605:検出されたパッケージのダウングレード:NUnit 3.8.1から2.6.4。プロジェクトから直接パッケージを参照して、別のバージョンを選択します。
MyProj.UI.Tests.Android-> MyProj.UI.Tests-> MyProj.Core.Tests-> NUnit(> = 3.8.1)MyProj.UI.Tests.Android-> NUnit(> = 2.6.4)


それらの上にマウスを置くと、それがわかります。ほとんどの場合、それはそれらを検出/解決できないか、競合が存在するためです。エラーウィンドウも確認すると、ソリューションのエラーを説明する傾向があります。
Nkosi

52
@Nkosiにカーソルを合わせても何も表示されません
user1

2
これらの参照は、プログラムをビルドするときに使用されます。しかし、それらはIDEにとっても重要であり、IntelliSenseを提供するためにそれらを解決する必要があります。それが失敗すると、警告の三角形が表示されます。[ビルド]> [ビルド]を使用して、エラーメッセージを取得します。
Hans Passant

27
これが私に起こったとき、ビルド警告はありませんでした。警告アイコンがUIで動かなくなった。プロジェクトをアンロードして再ロードすると修正されました。
StackOverthrow 2018年

1
@TKK:これは数分間しか続かないと思います。その後、UIに警告の三角形が表示されます。少なくとも、ソリューションを再度開いた後、私にはそれが起こりました。最初は修正されていると思いましたが、その後、警告の三角形が突然現れました。
PussInBoots

回答:


68

見た目がおかしいので、VSを再構築してから再起動してみてください。


5
従来の「再起動してみてください」という解決策を思い出していただきありがとうございます:)。ソリューションを構築したときにVSがパッケージを削除する理由を疑問に思って、この1時間を過ごしました。私はVSを再起動し、すべてが期待どおりに機能しました。/ ugh
ライアンE.

1
古典的な「シャットダウン」は、常に世界のすべての悪の解決策とは限りません:/
sgrysoft

今日正確にVisual Studio 2019を最新バージョン(16.5.1)に更新しました。そして問題はまだ存在していますが、この解決策はまだ機能します:)
Willy David Jr

それをオフにしてから再びオンにします:-D
Don Ch

61

dotnet restore複雑な操作を行う前に実行すると、エラーウィンドウやソリューションエクスプローラーよりも多くの情報が提供されます。

このコマンドは、パッケージマネージャーコンソールで実行できます。

ツール> NuGetパッケージマネージャー>パッケージマネージャーコンソール


4
VSを再起動する代わりに、ソリューションを再開するだけでもうまくいきました。
キド

なぜdotnet復元を行うのですか?ビルドでそれを行う必要はありませんか?
パブラム

11

ビルドログでたまたまこれに気づきました。

C:\ Program Files \ dotnet \ sdk \ 2.0.2 \ Sdks \ Microsoft.NET.Sdk \ build \ Microsoft.NET.Sdk.DefaultItems.targets(199,5):warning:A PackageReference for 'NETStandard.Library' was wasプロジェクトに含まれています。このパッケージは.NET SDKによって暗黙的に参照されるため、通常はプロジェクトから参照する必要はありません。詳細については、https://aka.ms/sdkimplicitrefsを参照してください。

したがって、ここにリストされている.Net Standard nugetの依存関係としてリストされているすべてのパッケージをアンインストールしました。

.NETStandard 1.1

  • Microsoft.NETCore.Platforms(> = 1.1.0)

  • System.Collections(> = 4.3.0)

  • System.Collections.Concurrent(> = 4.3.0)

  • System.Diagnostics.Debug(> => 4.3.0)

  • System.Diagnostics.Tools(> = 4.3.0)

  • System.Diagnostics.Tracing(> = 4.3.0)

  • System.Globalization(> = 4.3.0)

  • System.IO(> = 4.3.0)

  • System.IO.Compression(> = 4.3.0)

  • System.Linq(> = 4.3.0)

  • System.Linq.Expressions(> = 4.3.0)

  • System.Net.Http(> = 4.3.2)

  • System.Net.Primitives(> = 4.3.0)

  • System.ObjectModel(> = 4.3.0)

  • System.Reflection(> = 4.3.0)

  • System.Reflection.Extensions(> = 4.3.0)

  • System.Reflection.Primitives(> = 4.3.0)

  • System.Resources.ResourceManager(> = 4.3.0)

  • System.Runtime(> = 4.3.0)

  • System.Runtime.Extensions(> = 4.3.0)

  • System.Runtime.InteropServices(> = 4.3.0)

  • System.Runtime.InteropServices.RuntimeInformation(> => 4.3.0)

  • System.Runtime.Numerics(> = 4.3.0)

  • System.Text.Encoding(> = 4.3.0)

  • System.Text.Encoding.Extensions(> = 4.3.0)

  • System.Text.RegularExpressions(> = 4.3.0)

  • System.Threading(> = 4.3.0)

  • System.Threading.Tasks(> = 4.3.0)

  • System.Xml.ReaderWriter(> = 4.3.0)

  • System.Xml.XDocument(> = 4.3.0)

そして、黄色の警告が消えました。

ここから:https : //blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-net-standard-2-0/

また、以下のようなNoWarnプロパティを使用できることもわかりました。

<ItemGroup>
  <PackageReference Include="Huitian.PowerCollections" Version="1.0.0" NoWarn="NU1701" />
</ItemGroup>

7

黄色の三角形は、パッケージの物理ファイルがなくなり、ハードドライブで使用できなくなったことを意味します。

これは通常get latest version、特に新しいマシンを使用していて、TFSサーバーからプロジェクトコードを取得したい場合に、TFSでソース管理に要求を発行するときに発生します。

また、low quality internet connectionほとんどの場合、データの損失やダウンロードしたファイルの破損を引き起こす可能性もあります。

ここに画像の説明を入力してください

問題にいくつかのパッケージが不足している場合は、packages.configファイルを変更してこれらのパッケージをから削除し、packages.confignugetパッケージマネージャーを介して不足しているパッケージを再インストールできます。

しかし、問題がいくつかのパッケージよりも不足している場合、不足しているパッケージを取得するために私が使用する最良かつ迅速な方法は次のとおりです。

  1. Visual Studioの新しいインスタンスを開く
  2. パッケージが欠落しているプロジェクトタイプと同じプロジェクトタイプで新しいプロジェクトソリューションを作成します(例:個別ユーザーアカウントのASP.Net MVC)
  3. 新しいプロジェクトのパッケージを最新のものに更新して、以前のプロジェクトソリューションのパッケージバージョンと一致させます。
  4. ファイルエクスプローラーを開き、作成した新しいソリューションのパッケージフォルダーに移動します。
  5. フォルダのすべての内容をコピーしPackages、すべてを選択することで、ノートフォルダ内のコンテンツだけ自体フォルダのパッケージをコピーしないでください
  6. 以前のソリューション(パッケージが不足しているソリューション)のPackages既存のアイテムを上書きするフォルダーに貼り付けます。
  7. ソリューションエクスプローラーのパッケージフォルダーに移動して展開し、更新ボタンをクリックして、不足しているパッケージの多くが黄色の三角形なしで表示されていることを確認します
  8. 最後に、新しいソリューションを作成するときにデフォルトで含まれていないいくつかの欠落したパッケージができます。それらのパッケージをpackages.configファイル(nugetパッケージマネージャーが読み取るファイル)から削除して、インストールされているパッケージを特定する必要があります。 nugetパッケージマネージャーを使用して、それらを新規としてインストールします。

注意してくださいので、この1のための簡単な解決策を期待していない、プロジェクトからファイルを行方不明に関わるような問題を解決するために、常に困難であり、および開発者の経験に依存します。

エラーの原因について、Microsoftはバグであると述べていますが、Visual Studioのどのバージョンでも発生する可能性があります。


1
プロジェクトに関しては、Visual Studio(2019)を再起動することで解決したようです。
Steve Smith、

packages.coinfigはありません
pabrams

6

この問題を持つ新しい人のための文書化の目的のためだけにこれを試してください、あなたは覚えています:D

ツール> NuGet Administrator>構成に移動した場合。そして、あなたは「ナゲットを許可する...」と「自動的にチェックする...」をチェックしています。

あなたがしなければならないのは、「すべてのNuGetキャッシュをクリアする」ボタンをクリックすることだけです

それで終わりです。手動で考えるのは危険であるほど編集する必要はありません。信じてください。ここで多くの時間を説明するよりもいくつかの手順を実行する必要があり、マイクロソフトの公式ドキュメントの5つ以上の手順を試す必要があります。その問題はここで確認できます:https : //docs.microsoft.com/es-es/nuget/consume-packages/package-restore#restore-packages-automatically-using-visual-studio

しかし、キャッシュを消去するだけですべての問題が解決します


4

警告アイコンはあるが警告はなく、実際には何も問題がないように見える場合は、プロジェクトを右クリックし、[プロジェクトのアンロード]>プロジェクトをもう一度右クリック> [プロジェクトの再読み込み]をクリックします。アイコンは一瞬表示され、その後Visual Studio 2019で消去されました。これにより、Visual Studioの完全な再起動が回避されます。


2

奇妙なことに、.Net Core 3プロジェクトでは、プロジェクトのコンテキストから[ プロジェクトの依存関係をロード ]をクリックするだけで、警告アイコンが消えました。

役立つスクリーンショット:

ここに画像の説明を入力してください


1

Visual Studioを16.4.4に更新したところ、問題は解決しました。参照は修正され、黄色の三角形はなくなりました。ありがとう。


1

プロジェクトのクローンを作成すると、このエラーが発生しました。主な理由は、Nugetパッケージを復元できなかったためです。nuget.orgをアクティブなリソースのみにすることで解決策を見つけました。

ここに画像の説明を入力してください

Nuget.orgをアクティブなリソースとしてのみ選択してください。

それが役に立てば幸い


1

黄色の感嘆符は通常、参照がないか、サポートされていないdllが原因です。リポジトリを複製すると、ナゲットパッケージの多くに黄色の感嘆符が表示される可能性があります。プロジェクトのバージョンが適切であることを確認しても問題が解決しない場合は、以下の解決策を試すことができます。

パッケージマネージャーコンソールで、この問題が発生しているプロジェクトを選択し、次のコマンドを入力します。

Update-Package -Reinstall

これにより、すべてのパッケージが強制的に再インストールされます。このコマンドはNuGetパッケージのバージョンを更新せず、単に強制的に再インストールします。

この解決策は私の場合にうまくいきました。VS2019を使用しています。これが他の人にも役立つことを願っています。


0

他のすべてが読み込まれない原因となるパッケージが1つある可能性があります。.csprojのパッケージに1つずつコメントを付けて、どのパッケージが問題を絞り込んでいるかを調べます。


0

マークされた回答Microsoft.NETCore.Platforms記載されているようにアンインストールしようとすると、次のエラーが発生します。

「NETStandard.Library.2.0.3」が依存しているため、「Microsoft.NETCore.Platforms.1.1.0」をアンインストールできません。

他のパッケージをアンインストールしましたが、それでもNETSDK1023エラーが発生します。

'NETStandard.Library'のPackageReferenceがプロジェクトに含まれています。このパッケージは.NET SDKによって暗黙的に参照されるため、通常はプロジェクトから参照する必要はありません。詳細については、https://aka.ms/sdkimplicitrefsを参照してください。

今私は私の.csprojを編集し、次の部分を削除しました

<PackageReference Include="NETStandard.Library" Version="2.0.3" />

で述べたようにhttps://aka.ms/sdkimplicitrefsの提言

.NET Coreまたは.NET Standardを対象とする場合、プロジェクトファイル内のアイテムを介してMicrosoft.NETCore.AppまたはNETStandard.Libraryメタパッケージへの明示的な参照を持たない<PackageReference>でください。

これで警告は消えました!


0

上記のどれもうまくいきませんでした。ソリューションに他のプロジェクトへの依存関係に関する三角形の警告が含まれる1つのプロジェクトがソリューションにあり、VSで多くの赤いエラーが発生しました。ただし、問題なくビルド、実行、デバッグできます。最後に、ソリューションツリーでプロジェクト名を右クリックしてプロジェクトをアンロードし、プロジェクトを再ロードしました。Visual Studioに感謝します。VS 2019 16.7.1を使用しています


-3

この問題を解決できるすべてのNuGetパッケージを更新しても問題がない場合。

[ツール]メニュー- > [ NuGetパッケージマネージャ - > ソリューションのためのNugetパッケージの管理。このメニューが表示されたら、[ 更新 ]タブをクリックし、[ すべて更新 ] ボタンをクリックします。


4
すべてのパッケージを最新バージョンに更新しませんか?1つ以上のパッケージの特定の(最新ではない)バージョンが必要な場合、これは望ましくない場合があります。
Gertsen

すでに最新のパッケージを使用している場合、これは優れたソリューションです。私の問題をすぐに修正しました。
n4rzul

1
これは常に解決策とは限りません。プロジェクト内に、更新すべきでないパッケージがある場合があります。
カラス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.