web-dev-qa-db-ja.com

VS 2017 15.3参照に関する黄色の三角形

今朝、VS 2017 15.3にアップグレードすると、ほとんどの参照で黄色の三角形が表示されます。プロジェクトは正常に実行されます(ビルドはCLIとVSで適切であり、復元は複数回実行されています)が、実際はdotnetcore 2.0でさらに優れていますが、これらはそのままです。他の誰かがこれを起こしたか、提案をしましたか?ありがとう。

Project.assets.jsonファイルへのリンク-> https://www.dropbox.com/s/c85yuyjiu4pnget/project.assets?dl=

Yellow triangles in Solution Explorer

また、すべてが正常にビルドおよび実行されますが、グレー表示された使用と赤い参照の問題。

enter image description here

Warnings Window

27
dodegaard

更新:VisualStudioのTwitterアカウントから、これはバグであり、今後の修正に取り組んでいるとの連絡がありました。..

私の投稿には2つの回答があります。

1)グレー表示されているもので指摘されている使用の問題は、実際にはReSharperの問題でした。 VS 2017 15.3にアップグレードしてR#を使用する場合は、必ず2017.2にも更新してください。

2)黄色の三角形の問題はVisual Studioチームによって調査されていますが、正直に言って、これらの参照が低い依存関係(つまり、異なるレベルのNewtonsoft)またはプレビューに強制されているというビルドの警告にリンクしていると思います。急速に進化する.NET 2.0の世界は、この問題を悪化させた可能性があります。黄色の三角形は従来、欠落していることを意味していましたが、警告をチェックして関連性があるかどうかを確認し、依存関係チェーンを確認します。 VSチームから返事があったら、この回答を更新します(Twitterでこれを手伝ってくれたDamian Edwards + Scott Hanselmanに叫ぶ)。

8
dodegaard

私の(.NET 4.6.1)ソリューションのプロジェクトをVS2017に付属する新しい.NET Standard .csproj形式に更新した後、参照に関する黄色い三角形が発生していました。私が警告を受けていた参照はProjectReferenceタイプでした(ただし、問題のプロジェクトの一般的なパッケージではPackageReferenceにあふれているように見えました)。

ビルドに関する警告はありませんでした。詳細なビルド出力には、原因を示すものは何もありませんでした。

私のソリューションでは、すべての警告に従って単一のプロジェクトに戻ることができました。ソリューションからそのプロジェクトを削除してから追加し直し、必要なプロジェクト参照のみを再追加することで解決できました。

この問題は、新しい推移的な依存関係のサポートが原因で、不要なプロジェクト参照(または場合によっては循環)に関連していたようです。プロジェクトを削除し、最小のProjectReferencesだけでプロジェクトを追加し直し、依存関係を伝播するために推移的な依存関係サポートに依存すると、警告はすべて消えました。

これにより、VS2017ビルドツールのみがインストールされている(完全なIDEではない)CIサーバーでコマンドラインmsbuildによって開始されたビルド中に、問題のプロジェクトがコンパイルに失敗する問題も解決しました。

4
Simon Fox

参照元プロジェクトと参照の間でWindows SDKバージョンが一致しないと、それが発生します。 vcxprojファイルでは、「<WindowsTargetPlatformVersion> SDK Version </ WindowsTargetPlatformVersion>」です

VS2012からVS2017にアップグレードしました。すべてが良かったので、libtomcryptとlibtommathの新しいバージョンにアップグレードしました。既存のプロジェクトを微調整するのではなく、VS2008-> VS2012-> VS2017のディストリビューションからプロジェクトをアップコンバートしました。その過程で、両方の新しいプロジェクトでWindows SDKバージョン10.0.17763.0を取り上げました。ただし、それらを参照したプロジェクトはすべて8.1であったため、警告です。

1
GTAE86

私は同じ問題を抱えていました。いくつかの参照には黄色の三角形が付いていました。ただし、プロジェクトをビルドして実行することはできました。この回答から次の手順を実行して、これらの警告を削除することができました: 。Net 2015 References with yellow triangle for Nuget packages on portable libraries

Visual Studioのトレースをオンにしました。正しくロードされていないすべての参照について、ログファイルに次の警告がありました。

「Reference:Microsoft.Win32.Primitives、Version = 4.0.2.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a、processorArchitecture = MSIL」と「Reference:C:\ Program Files(x86)\ Visual Studio\MSBuild\Microsoft \」の間に競合が発生しましたMicrosoft.NET.Build.Extensions\net461\ref\Microsoft.Win32.Primitives.dll ' AssemblyVersion '4.0.3.0'は、 「4.0.2.0」。

正確には、次の手順を実行しました。

  1. .csprojファイルからエラー条件を削除しました
  2. .csprojファイル内のロードされていない参照の<Private>true</Private>パラメーターを削除
  3. \ libおよび\ refフォルダーからロードされていないパッケージを削除しましたMSBuildフォルダー。
  4. ソリューションの\ packagesフォルダーからパッケージを削除しました。
  5. 復元されたnugetパッケージ。

これらすべての手順が必要かどうかはわかりませんが、うまくいきました。

0
Lickut

Visual Studio 2017でも同様の問題が発生しました。パッケージの依存関係の設定を変更したときに(最低の依存関係から最高の)インストールしたい場合はすべて正常に機能することを発見しました。

0
Jean Claude