MEFプラグインプロジェクトへの参照を追加すると警告アイコンが表示されるのはなぜですか?


321

プラグインプロジェクトを直接参照し、プラグインクラスをインスタンス化して、プラグインのコアクラスをテストしたいと思います。テストコンソールアプリプロジェクトを作成し、プラグインプロジェクトにプロジェクト参照を追加すると、参照リストの参照の横に警告アイコン(感嘆符が付いた黄色の三角形)が表示されます。

代わりに、プラグインのアセンブリビルド出力であるdllへの参照を追加しても、そのような警告は表示されません。この警告は私に何を伝えようとしているのでしょうか?


8
ほとんどの場合、警告の三角形には、ツールウィンドウのヒントまたは(失敗した)エラーウィンドウのエントリがあります。推測では、2つのプロジェクトには互換性のない依存関係があります。
Damien_The_Unbeliever 2013年

2
ビルドしようとするとコンソールに警告が表示されますか?
Jite、2013年

231
さまざまな.netフレームワークバージョンを対象とするプロジェクトでこれを確認しました
mhand

4
@OPでは、kad81の答えを正しいものとして選択できますか
アンディ

5
これはいつも捕まえます。.NET 4ソリューションへの新しいプロジェクトの追加。デフォルトは4.5です。
ロビンフランス語

回答:


674

質問のコメントで述べたように、プロジェクト間で.NET Frameworkのバージョンが異なると、これが発生する可能性があります。新しいプロジェクトのプロパティをチェックして、別のデフォルトバージョンが使用されていないことを確認します。


13
私が知っておくべきことは、なぜビジュアルスタジオがそれらの参照の追加を受け入れたのかということです。
アンデルスリンデン、2016年

16
私はVS 2015を使用していますが、問題はまだ残っています。私がここに来るまで、私は30分を失いました。
Alisson

14
問題が何であるかを説明するホバーテキストやビルドエラーすらありません
matao

6
これが問題の原因であることを確認できます。Visual Studio 2017と更新15.3では、意味のあるメッセージが実際に表示されないという問題がまだ解決されていないことも確認できます。とてもうるさい。
グレッグRテイラー

4
@matao同意した!エラーの詳細を取得できなかったのはうっとうしい…
nterry

74

ASP.Net Webアプリと、Webアプリ内で参照する必要がある2つのライブラリクラスプロジェクトで同じ問題が発生しました。ビルドが失敗し、参照が無効である理由に関する情報はありませんでした。

解決策は、すべてのプロジェクトが同じターゲットフレームワークを持つようにすることでした。

Visual Studio 2015- プロジェクトを右クリック>プロパティ>アプリケーション>ターゲットフレームワーク

保存、クリーニング、再構築ソリューション。プロジェクト参照が黄色の警告として表示されなくなり、ソリューションがコンパイルされます。

私のWebアプリは.Net 4.5をターゲットにしていましたが、他の2つの依存ライブラリクラスプロジェクトは.Net v4.5.2をターゲットにしていました


44

一緒に使用するプロジェクトの両方(またはすべて)の場合:

プロジェクトを右クリック>プロパティ>アプリケーション>ターゲット.NETフレームワーク

プロジェクトの両方(またはすべて)が同じ.NET Frameworkバージョンを使用していることを確認してください。


完璧です、私のために働きました!.NET Framework 4.5.2のMVCプロジェクトがありました。そして、それを参照している私のクラスライブラリは.NET Framework 4.7でした。
Mike Upjohn 2017

既存のソリューションに追加された新しいプロジェクトは、どのバージョンであるかを知るのに十分賢いと思いますが、残念ながらそうではありません。
Ron

39
  1. 各プロジェクトですべてのバージョンが同じであることを確認し、各プロジェクトをクリックして、バージョンを確認します。プロジェクト>プロパティ>アプリケーション>ターゲット.NETフレームワーク
  2. a。ツール> Nugetパッケージマネージャー>パッケージマネージャーコンソールタイプUpdate-Package -Reinstallに移動します(機能しない場合は2.bに進みます)

    b。これは重要ですが、機能する最大の可能性です。<Target>を削除します。通常、.csprojの下部にある複数行の </ Target>を使用します。

  3. ソリューションを保存、読み込み、ビルドします。


1
そのおかげで、Visual Studioの.Netバージョンに関する素敵なエラーメッセージは、ここで誤って表示されません。
colmde

1
@colmde興味深いことに、ソリューションをクリーンアップすると、出力ウィンドウに次のメッセージが表示されます。パッケージがプロジェクトと完全に互換性がない可能性があります」
elszeus

1
他の回答で言及されていないパート2.bは私にとって重要でした!2.b <ターゲット>を削除します。通常、.csprojの下部にある複数行の</ Target>を使用します。
シェルペペレイラ

1
パート2.bは完全に異常ですが、動作します!感謝
Elo

1
ありがとう、2.bも私にとってはトリックでした。これを自分で理解したことはありません。
Henrik Clausen

23

現在のソリューションのすべてのプロジェクトですべてのパッケージを再インストールします。

Update-Package -Reinstall

2
この提案は私の問題を直接解決しませんでしたが、それは私のシナリオに正しい方向を示しました。それが役立つ可能性があるものについては、実際にダウンロードする適切なバージョンを見つけるために、Update-PackageのNuGetパッケージソースをv3に変更する必要がありました:docs.nuget.org/consume/package-manager-dialog#package-sources
John Lee

1
すべてのパッケージを削除してインストールし、黄色の三角形が戻ってきました。
AndersLindén19年

8

同じフレームワークバージョンを対象とするプロジェクトがあることを確認してください。ほとんどの場合、理由は、現在のプロジェクト(別のプロジェクトの参照を追加する場所)が、他のプロジェクトとは異なる.netフレームワークバージョンを指しているためです。


5

参照されるDLLのNETFrameworkと、DLLを追加するプロジェクトを確認します。例:DLL ==> supportedRuntime version = "v4.0"プロジェクト==> supportedRuntime version = "v3.0"

警告アイコンが表示されます。解決策:DLLバージョンの一貫性を確保します。


5

私にとって、.NET Framework 4.7.1コンソールアプリケーションで.NET Standard 2.0クラスライブラリを参照するときにこの問題に遭遇しました。はい、フレームワークは異なりますが、互換性があります(.NET Standardは.NET Coreと.NET Frameworkの両方で動作するはずです。)プロジェクト参照などのクリーンアップ、再構築、削除、再読み込みを試みましたが、成功しませんでした。 。最後に、Visual Studioを終了して再度開くと問題が解決しました。


4

この質問が出されて久しぶりですが、もし誰かがまだ興味を持っているなら-最近、似たようなアイコンに出くわしました。私はVS 2008を使用してC#.netプロジェクトをコンパイルしていました。VSがそれらの参照のアセンブリを見つけられないことがわかりました。私がVSをダブルクリックすると、参照が更新され、それらの一部のアイコンが削除されました[編集:検索できました]。残りの参照については、それぞれのアセンブリをコンパイルする必要がありました。


4

私の2セントを@ kad81の回答に追加し、

Visual Studio-> BUILD-> Configuration Managerに移動します

右上隅の[アクティブソリューションプラットフォーム]ドロップダウン(私はVS 2012)で、[混合プラットフォーム]の場合は、参照サードパーティアセンブリに基づいて適切なプラットフォームに変更します。

次に、リスト内の各プロジェクトで、すべてのプロジェクトに同じプラットフォームを選択していることを確認してください。(x86が存在しない場合は、「」を選択すると、「x86」を選択できます。)

最初にライブラリプロジェクトを再構築し、次にプロジェクトを参照します。お役に立てれば。


4

VSを閉じてから開いてみてください。

ばかげているようですが、上記を1時間実行して、すべてが正常に並んでいることを確認しました。VS 2017を再起動したところ、問題は解決しました。


1
私のために働いた。ばかげているか、そうでない場合もありますが、Visual Studioは混乱し、キャッシュがめちゃくちゃになります。それを提案してくれてありがとう-私はそれがうまくいくと思って愚かな感じがしたのでそれをするのが嫌だったが、「一体」-他の事柄の1時間後に私も同様にそれがうまくいくかもしれない
Blake

2

Asp.netコアで、プロジェクトの名前空間または名前を変更するとアラートが表示されることがあります。この種のアラートを削除するには、プロジェクトをアンロードして再度ロードするだけです。それでも問題が解決しない場合は、アセンブリ参照を見つけることができません。


1

別の理由でこれらのアイコンがありました。すべてのプロジェクトに1つの大きなソリューションがあります(100近く)。興味のあるプロジェクトのサブセレクションを作成し、新しいソリューションを作成しました。ただし、コンパイルされたDLLへの参照ではなく、プロジェクトが参照する参照...

いくつかの調査の後、私はGitHubこのリンクを見つけました。これはVS2015の新しい動作であることを説明しています。

GitHubページで、プロジェクト参照をバイナリ参照に変換するための回避策について説明しています。


1

一部の機能していないものを修正するには一部のライブラリを削除することが理にかなっいますが、これは奇妙に聞こえません。

とにかく、問題が広すぎてさまざまな要因が原因である可能性があると思うので、状況/解決策を共有したいと思います。

Xamarin FormsとTelerikライブラリを使用したプロジェクト(顧客が作成)がありました。これは一般的にコンポーネントに関連しており、ライブラリはパッケージフォルダーに含まておらず、Nuget(有料のもの)からも利用できません。

プロジェクト全体のリファレンスは「黄色」で、恐ろしく恐ろしく見えました。

溶液はわずかであった除去するものTelerikの参照(それを用いたコードのいくつかのコントロールを含む)を。その直後、すべての参照は魔法のように共通の通常の灰色になり、エラーが(ほとんど)消えました。

「大部分」-「要素がどこにも定義されていない」というエラーメッセージ「すべての周りが赤い」が時々まだ発生するため。これは奇妙で不便ですが、プロジェクトをコンパイルして実行することはできます。ソリューションをクリーンアップし、Visual Studioを再起動し、少し祈って、もう一度クリーンアップし、obj / binフォルダーを削除して、再起動してください。うまくいきます。

重要なのは、利用できないライブラリ参照を削除することです。これは、エラーメッセージにまったく別のメッセージが表示されるためです。(たとえば、「Xamarin.Build.Download.XamarinDownloadArchivesが見つからないか、見つからない」などのように表示されますが、それは、使用可能な参照がないことを意味するだけかもしれません。

次に、パッケージフォルダーを削除し、プロジェクト/ソリューションを再読み込み/再度開き、[Nugetパッケージの管理]に移動して[復元]ボタンをクリックします。


1

.Net Core 3.1を対象とするすべてのプロジェクトでVisual Studio 2019を使用すると、ソリューションは次のようになります。

  1. クリーン/ビルド/リビルド。
  2. Visual Studio 2019を再起動します

0

私も同じ問題に直面しましたが、私のケースは上記のものとは少し異なりました。別のコンピューターで作成したプロジェクトを開こうとしました。参照を追加してもパッケージフォルダーへのパスが更新されないため、VSを再起動したり、.NETバージョンを変更したり、言及されている推奨事項を実行しても問題が解決しないことがわかりました。csprojファイルをnotepad ++で開き、packagesフォルダーへの相対パスをすべて修正しました。その後; すべての警告が消えました。それが役に立てば幸い。



0

助けてくれてありがとう。これが私が問題を修正した方法の内訳です:

プロジェクトを右クリック>プロパティ

[アプリケーション]で、ターゲットフレームワークを変更します。私の場合、ImageSharpは.Net 4.6.1を使用していました。これはpackages.configにあります。

プロジェクト参照に移動します。SixLaborsには黄色の三角形があります。NuGetパッケージを更新する必要があります。

[参照]> [NuGetパッケージの管理]を右クリックします。

SixLaborsを更新します。

わずかなコード更新があるかもしれませんが(以下を参照)、これで私の問題は修正されました。

ImageSharp.ImageをImageSharp.PixelFormats.Rgba32に変換しますか?


0

Visual Studio 2019では、私のプロジェクトのターゲットフレームワークの1つは.netコアでしたが、ターゲットフレームワークが.net標準である別のプロジェクトを参照していました。私はすべてのプロジェクトを.net標準を参照するように変更し、アイコンはなくなりました。プロジェクトが何であるかを確認するには、プロジェクトを右クリックしてプロパティをクリックし、ターゲットフレームワークを確認します。通常はプロジェクト自体をクリックして、<PropertyGroup>の下の<TargetFramework>タグを確認することもできます。


0

マルチプロジェクトソリューションで、他のすべてが失敗した場合...スタートアッププロジェクトで確認します。依存関係->アセンブリ。エラーのある参照プロジェクトがそこにあるかどうかを確認します。それを削除して再構築します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.