web-dev-qa-db-ja.com

ランダムアセンブリ参照が失敗する(「usingディレクティブまたはアセンブリ参照がありませんか?」)

私のアプリケーションには、3.5と4.0を対象としたアセンブリが混在しています。 4.0をターゲットとする新しいWindowsサービスに取り組んでいますが、プロジェクトで、ソリューション内の他のアセンブリの一部が突然表示されないようです。つまり、ビルド時に、これらの他の特定のアセンブリへのすべての参照が次のエラーを生成します。

タイプまたは名前空間名 '[X]'は名前空間 '[Y]'に存在しません(アセンブリ参照がありませんか?)

プロジェクト参照を削除して再度追加すると、赤い波線が消えて、Intellisenseが想定どおりに再び起動します。ソリューションの他のすべてのプロジェクトは問題なくビルドされます。 しかし、この新しいプロジェクトをビルドしようとするとすぐにエラーが返されます。

失敗する参照の1つは、3.5をターゲットとするCore.dllへの参照です。最近、4.0をターゲットとするCoreEx.dllを追加し、アセンブリ間で名前空間を共有しました。新しいサービスはCoreEx.dllを表示できますが、Core.dllを表示できません...つまり、using Core.Utilities...と入力すると、IntellisenseはCoreEx.dllから名前空間の小さなセットを取得しますが、Coreにのみ表示される名前空間は表示しません.dll。これを追加した後にソリューションが正常に構築されたと確信していますが、これは最近の注目すべき変更です。

もう1つの失敗した参照は、一連のデータセットとEntity Frameworkのものを保持するコアData.dllへの参照です。これは最近4.0に移行されました。繰り返しますが、プロジェクトの移行後に構築されたソリューションはほぼ肯定的ですが、言及する価値があります。

最後に失敗した参照は、サービスから1つ上のレベルの名前空間を使用するアセンブリです。たとえば、問題のあるプロジェクトは名前空間ProductName.Component.ComponentServiceに基づいており、名前空間ProductName.Componentに基づいてプロジェクトを表示できません。これは最近、問題のあるプロジェクトとともに作成され、4.0も対象としています。

ご覧のとおり、アセンブリの参照が失敗するのは韻や理由がないようです...そして問題のあるプロジェクトは正常に参照できますsomeソリューションの他のアセンブリの。 Visual Studioのクリーニング、再構築、再起動を試みましたが、永続的に修正されたものはありません。何が原因でしょうか?

31
Calvin Fisher

新しいプロジェクトのターゲットプラットフォームをチェックし、それが.NET 4クライアントプロファイルをターゲットにしていないことを確認します。ある場合は、通常の.NET 4に変更します。

60
Dimitri

.net 4.5を利用するソリューションにプロジェクトを追加していました。追加したプロジェクトのデフォルトは4.5.1でした。これにより、4.5ライブラリは新しいプロジェクトと互換性がなくなりました。新しいプロジェクトのプロパティを調べ、デフォルトの4.5.1ではなく4.5をターゲットに設定しました。それを行った後、私のソリューションを構築することができました。

2
user3770181

依存関係はソリューションで正しく設定されていますか?私はプロジェクトAがプロジェクトBに依存する場合を2回以上見ましたが、2つの間の依存関係が設定されていないため、ビルドが散発的に失敗します。

この場合の根本的な原因は、ビルドの順序が確定的ではなく、成功/失敗がどのプロジェクトのビルド(変更内容に基づく)や最初のビルド(複数のビルドの場合)などに依存するかです。

1
DocMax

この問題は、上にあるすべてのsingステートメントを削除して手動で再度記述して解決すると、私に起こりました。

0

ターゲットフレームワークを4.0に変更するとうまくいきました。しかし、それは私たちが望んでいたソリューションではありませんでした。私たちはプロジェクトにVS 2010 Premiumを使用したかったのですが、.net 4.0を使用するつもりはありません...メインクラスライブラリプロジェクト(.net 2.0)はdll "system.web.abstractions.dll"を参照しています...メインクラスライブラリを参照する他のプロジェクト(.net 2.0)にこのdllへの参照を追加しました...コンパイルされたソリューション問題なく...だから、あなたのビジュアルスタジオソリューションでもそうかもしれません...

しかし、VS 2008 Professionalを使用すれば、すべてが正常に機能します。回避策は必要ありません。すべてが魔法のように機能します...

名前空間を変更したが、プロジェクトのプロパティでアセンブリ名を変更しなかった場合にも発生する可能性があることに注意してください。

0
Loïc Lopes

同様の問題があり、アセンブリ参照が失敗し(「usingディレクティブまたはアセンブリ参照がありませんか?」)、VSインテリセンスが使用を追加する機会を与えましたが、ソリューションでは参照に黄色のアイコンとビルドがありました失敗していた。

プロジェクトプロパティのターゲットフレームワークを見てこれを解決し、.netバージョンを参照ソリューションバージョンに変更して、すべての問題を解決しました。

注:.netバージョンはプロジェクト間で互換性があるはずです。

0
DJon