web-dev-qa-db-ja.com

ポータブルライブラリのNugetパッケージの黄色い三角形の.Net 2015リファレンス

以前に質問されたことは知っていますが、提案された解決策はどれも役に立たないので、もう一度質問し、できれば新しい提案を取得します。私が読んだ記事のいくつか:

VS .Net References with yellow triangleMEFプラグインプロジェクトに参照を追加すると警告アイコンが表示されるのはなぜですか?黄色の三角形の感嘆符アイコン(ソリューションエクスプローラー内)

私の5つのポータブルライブラリは、間違いなくすべて同じフレームワークを対象としています(これは提案の1つであったため、チェックして再チェックしました!):

  • .NET Framework 4.5
  • ASP.NET Core 1.0
  • Windows Phone 8
  • Windows Phone 8.1
  • Windows Phone Silverlight 8
  • Xamarin.Android
  • Xamarin.iOS
  • Xamarin.iOS(クラシック)

これまでに試した/行ったこと:

  • Nugetパッケージ参照をすべてのプロジェクトから手動で削除します。
  • 各.csprojを確認し、参照が実際に削除されたことを確認します。
  • ソリューションのルートにあるパッケージフォルダーを削除する
  • コンソールマネージャーを介してすべてのパッケージを再インストールしようとしました。エラーはまだありませんが、黄色の三角形はまだ表示されています。
  • Nugetマネージャーを介してすべてのパッケージを再インストールしようとしました。エラーはまだありませんが、黄色の三角形はまだ表示されています。

ポータブルクラスライブラリの1つのセクションを次に示します。

<ItemGroup>
    <Reference Include="crypto">
      <HintPath>..\..\..\packages\Portable.BouncyCastle.1.8.1\lib\portable-
        net4+sl5+wp8+win8+wpa81+MonoTouch10+MonoAndroid10+xamarinmac20+xamarinios10
        \crypto.dll
      </HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="Newtonsoft.Json">
  <HintPath>..\..\..\packages\Newtonsoft.Json.8.0.3\lib\portable-
      net40+sl5+wp80+win8+wpa81\Newtonsoft.Json.dll
  </HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="System.Net.Http">
  <HintPath>..\..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-
      net40+sl4+win8+wp71+wpa81\System.Net.Http.dll
  </HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="System.Net.Http.Extensions">
  <HintPath>..\..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-
      net40+sl4+win8+wp71+wpa81\System.Net.Http.Extensions.dll
  </HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="System.Net.Http.Primitives">
  <HintPath>..\..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-
      net40+sl4+win8+wp71+wpa81\System.Net.Http.Primitives.dll
  </HintPath>
  <Private>True</Private>
</Reference>

私の物理的なプロジェクトパスは次のとおりです。

C:\ xxxx\xxxxxx\xxxxx-xxxxxxx

したがって、bouncycastleを例として、上記に基づいて、フルパスは次のようになります。

C:\ xxxx\xxxxxx\xxxxx-xxxxxxx\packages\Portable.BouncyCastle.1.8.1\lib\portable-net4 + sl5 + wp8 + win8 + wpa81 + MonoTouch10 + MonoAndroid10 + xamarinmac20 + xamarinios10\crypto.dll

UwpソリューションにすべてのNugetパッケージを再インストールしたので、これは私のポータブルライブラリでのみ問題になりそうで、すべて正常に機能しました。イライラする部分は、まだ元の場所にある私のプロジェクトが完全にうまく機能していることです。パッケージをアンインストールして再インストールしましたが、すべてが期待どおりに動作しています。

誰か他の提案がありますか?

27
Thierry

私は問題が何であるかを見つけました!

@Gusmanに言及したように、警告をオフにしました。電源をオンにすると、ポータブルプロジェクトで次のメッセージが表示されました。

Warning: IDE0006 - Error encountered while loading the project. Some project
features, such as full solution analysis for the failed project and projects
that depend on it, have been disabled

この記事へのリンクを提供しました プロジェクトシステムビルドエラーの診断

提供された指示に従い、designtime.logで終わる多数のファイルを調べた後、それらのすべてにFAILパッケージを参照するNugetがあることに気付きましたが、前述のように、すべて削除しました私のさまざまなプロジェクトからのそれらの、それで私はそれらの1つから.csprojを再チェックするために行った、これは私が問題を見つけたときです!

実際には2つの問題があります。

  1. NugetMicrosoft.BCL.Build参照は正しく削除されません!!

  2. Microsoft.BCL.Build Nugetパッケージを再追加すると、.csprojにパスが正しく設定されません

以下に障害の例を示します。

<Import Project="..\..\..\packages\Microsoft.Bcl.Build.1.0.21
       \build\Microsoft.Bcl.Build.targets" Condition="Exists
       ('..\..\..\packages\Microsoft.Bcl.Build.1.0.21
       \build\Microsoft.Bcl.Build.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.Microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.21\build\
        Microsoft.Bcl.Build.targets')" Text="$([System.String]::Format
        ('$(ErrorText)', '..\packages\Microsoft.Bcl.Build.1.0.21
        \build\Microsoft.Bcl.Build.targets'))" />
    <Error Condition="!Exists('..\..\..\packages\Microsoft.Bcl.Build.1.0.21\build\
        Microsoft.Bcl.Build.targets')" Text="$([System.String]::Format
        ('$(ErrorText)', '..\..\..\packages\Microsoft.Bcl.Build.1.0.21\
        build\Microsoft.Bcl.Build.targets'))" />
</Target>

最初の行、つまり<Import Project="..\..\..\packages\Microsoft.Bcl.Build.1.0.21>は表示されないはずですが、Microsoft.BCL.Buildが削除されてもプロジェクトに残っているように見えます。

必要な場合はそのままにして、2番目のエントリを修正します。これが私がしたことです。ご覧のとおり、Microsoft.BCL.BuildNugetパッケージをチェックする2つのエントリがあります。私の場合、最初の1つを削除しました。

`<Error Condition="!Exists('..\packages\`

そしてこれを保持しました:

`<Error Condition="!Exists('..\..\..\packages\`

.csprojの編集が完了したら、ソリューションでプロジェクトをリロードし、Microsoft.BCL.Buildの問題が解決されただけでなく、黄色の三角形でマークされた他のすべてのNuget依存関係も解決しました。

これで私の一日のほとんどを無駄にしましたが、うまくいけば、これは他の人を助けるでしょう。

22
Thierry

インストール中に出力エラーがなく、ビルド/リビルドで警告がない場合。単に:

  1. Visual Studioを再起動します
62
pim

フレームワークDotNetCoreApp 1.1の2つのプロジェクトで、vs2017のソリューションで同じ問題に直面しました。 Allパッケージに感嘆符/黄色の三角形が表示されました。管理者としてvs2017を実行すると、解決しました。

6
Remco

GitHubからラップトップにプロジェクトを複製したときに同じ問題が発生しました。 EntityFrameworkとAspNet.Identityにも黄色の三角形が表示されます。私の場合、この問題を解決するために行ったのは、パッケージフォルダー(Nugetパッケージを含む)を削除し、プロジェクトを開いた後にパッケージを復元することでした。その結果、VS2017を再起動した後、これらの警告はオフになりました。

2
Jason Ho
  1. プロジェクトファイルを別のフォルダーにコピーする
  2. ソリューションのプロジェクトでフォルダーを削除する
  3. 同じ名前で新しいプロジェクトを作成する
  4. 手順1のファイルを新しいプロジェクトにコピーします
  5. パッケージを復元する
0
shop350

私はそれが古い投稿であることを知っていますが、最近、膝を変えた後にその警告エラーに苦しんでいます。 TFS(Visual Studio 2017)で取得を行ったところ、突然すべての参照に警告アイコンが表示されました。私が働いているのは、オブジェクトブラウザに行き、「すべてのコンポーネント」コンボボックスを選択し、最後にフレームワークを選択することです。私にとって、それは魅力的なように働いた。

Resolve warning references error

0
Nehoss