エラー「メタデータファイル '…\ Release \ project.dll'がVisual Studioで見つかりませんでした」


135

最近、私はこのメッセージをランダムに取得し始めました:

メタデータファイル '... \ Release \ project.dll'がVisual Studioで見つかりませんでした

いくつかのプロジェクトを含むソリューションがあります。現在のビルドモードはデバッグであり、すべてのプロジェクトの構成はデバッグに設定されています。しかし、メインプロジェクトを実行しようとすると、「メタデータファイル '... \ Release \ projectX.dll'が見つかりませんでした」といういくつかのエラーが発生することがあります。現在のモードはデバッグですが、フォルダー。どうして?すべてのソリューションファイル内で "Release \ projectX.dll"への参照を検索しようとしたところ、ResolveAssemblyReference.cacheファイルで見つかりました。

私はインターネットで適切な検索を行ったところ、同様の問題を抱えている人が何人か見つかりましたが、解決策がなかったか、少なくとも有効な解決策がありませんでした。

それらのプロジェクトへの参照を削除して読み込もうとしましたが、しばらくするとこれらのエラーが再び発生し始めました。

バグのようです。常にデバッグモードを使用しているのに、リリースフォルダ内の参照プロジェクトを検索するのはなぜですか?

PS。この問題に遭遇した人たちのために:私はそれを簡単な方法で解決することができませんでした。私はWindowsを再インストールした後にのみ消えました:(


このような問題について最初にすべきことは、.suoファイルを削除して再構築することです。
2014

この問題は、参照されたDLLが異なる(下位)バージョンの.net Frameworkを使用している場合に発生する可能性があります
m4ngl3r

並列ビルドをオフにするまで、この問題は常に発生していました。並列ビルドの依存関係チェックにバグがあり、古い情報のキャッシュに関連している可能性があります。(記録のために、私は並列ビルドを使用していますが、問題が発生した場合は、通常は
正常に


回答:


138

誰もが正しいです...すべてを試してください...(少しから多くの時間を無駄にします)

  1. 悪いコードはありますか?最初に修正します。
  2. クリーンなソリューションとVisual Studioの再起動
  3. 参照の削除/追加
  4. より大きなプロジェクトでビルド順序を確認し、確認します
  5. サブプロジェクトを手動で再構築する
  6. プロジェクト間のDLLを関連するbinフォルダーに手動でコピーする
  7. コーヒーを飲みに行き、ピンボールをして、明日戻ってきてください...その間、何か他のことを考えるかもしれません。

17
すべてのエラーをクリーンアップして、ソリューション/プロジェクトを安定させる必要があります。
Ravi Ram

これは、フォルダー名と名前空間名の名前が異なるために発生します。特定の名前で名前空間を作成し、後で名前を変更した場合、名前空間自体は古い名前になります。そしてコンパイルは.dlland .exeファイルを見つけるために古いパスを取ります。これを回避.csprojするには、テキストファイルで各名前空間のファイルを開き、ファイル内の古いパスを見つけます。これを削除し、ソリューションをクリーニングして再構築します。これでうまくいきました。私は丸一日この問題に取り組んだ。
Sooraj 2014

成功せず、時間がかかる場合は、最初に基本的なことをいくつか再試行してください。私はサブプロジェクトの構築を始めましたが、それでもエラーが発生しましたが、VSを閉じて再度開き、ソリューションを再構築しましたが、すべてうまくいきました。
Chris Halcrow、2014年

6
自家製の参照DLLで名前空間とプロジェクト名が一致していませんでした。また、4.5ではなく.NET 4.5.2でビルドされました。おとこ!
Jess

1
.suoファイルを削除してみてください。破損することは比較的一般的です。
Timbo

21

私はまったく同じ問題を抱えていました。50以上のプロジェクトを持つ大きなビジュアルスタジオソリューション。

すべての参照はプロジェクトとして追加されました。プロジェクトのビルド順序は正しかった(プロジェクトを右クリックしてビルド順序を選択)。

ただし、より高いレベルのプロジェクトのいくつかをビルドするとき、それらが依存する「ルート」プロジェクトはビルドされませんでした。

問題は、これらのプロジェクトが現在の構成でビルドするように選択されていないことでした(これがどのように発生したのかわからない)。

これを確認するには、[構成マネージャー]([ビルド]メニュー)を選択し、問題のあるプロジェクトがビルドするように設定されているかどうかを確認します。


ありがとうございました!これは、何らかの理由で私のリリース構成が私のプロジェクトの1つをビルドしなかったときに、私にとってはうまくいきました。
Vectovox 2014

あなたは私の命を救いました!
Chethan Shetty 2016

16

それらのプロジェクトへの参照を削除して再度追加したと言ったとき、正確にどのように再追加しましたか?Visual Studioの[参照の追加]ダイアログの[参照]タブを使用しましたか?または、「プロジェクト」タブ(ソリューション内の隣接するプロジェクトのリスト)を使用しましたか?

編集する:[参照]タブを使用し、/ Releaseフォルダーにある.dllへの参照を手動で追加した場合、Visual Studioは、どのモードを使用していても、その場所で.dllを常に検索します現在(デバッグまたはリリース)。

Releaseフォルダーから実際の.dllファイルを(手動で、または「Clean Solution」を実行して)削除した場合、.dllが存在しないため、参照が壊れます。

ProjectX.dllへの参照を削除して、もう一度追加することをお勧めします。ただし、今回は、[参照の追加]ダイアログの[プロジェクト]タブを使用します。この方法で参照を追加すると、Visual Studioは適切な.dllを取得する場所を認識します。デバッグモードの場合は、/ Debugフォルダーから取得します。リリースモードの場合、/ Releaseフォルダー。ビルドエラーは解消され、デバッグモードではリリース.dllを(不適切に)参照することもなくなります。


[参照の追加]ダイアログの[参照]タブを使用しました
ナイトコーダーの

1
私にとって、Visual Studioは「Visual Studio Solutionユーザーオプション」タイプのprojectname.v11を作成していました。このファイルを削除して再起動したところ、問題はありませんでした。
ウェスグラント

15

さて、私の答えはすべてのソリューションの要約だけではなく、それ以上のものを提供します。

セクション(1):

一般的な解決策:

この種類のエラーが4つあり(「メタデータファイルが見つかりませんでした」)、「ソースファイルを開くことができませんでした(「不明なエラー」)」という1つのエラーがありました。

「メタデータファイルが見つかりませんでした」というエラーを取り除こうとしました。そのため、私は多くの投稿、ブログなどを読んで、これらの解決策が効果的である可能性があることを発見しました(ここに要約します):

  1. VSを再起動して、もう一度ビルドしてみてください。

  2. 「ソリューションエクスプローラー」に移動します。Solutionを右クリックします。プロパティに移動します「構成マネージャー」に移動します。[ビルド]のチェックボックスがオンになっているかどうかを確認します。それらの一部またはすべてがオフになっている場合は、オンにしてから、もう一度ビルドしてみてください。

  3. 上記の解決策が機能しない場合は、上記の手順2で説明した手順に従ってください。すべてのチェックボックスがオンになっている場合でも、オフにしてからもう一度オンにして、ビルドを再試行してください。

  4. ビルドの順序とプロジェクトの依存関係:

    「ソリューションエクスプローラー」に移動します。Solutionを右クリックします。「プロジェクトの依存関係...」に移動します「依存関係」「ビルド順序」の 2つのタブが表示されます。このビルド順序は、ソリューションがビルドされる順序です。プロジェクトの依存関係とビルド順序を確認して、他のプロジェクト(たとえば「project2」)に依存しているプロジェクト(たとえば「project1」)がそのプロジェクト(project2)の前にビルドを試みているかどうかを確認します。これがエラーの原因である可能性があります。

  5. 欠落している.dllのパスを確認します。

    欠落している.dllのパスを確認します。パスにスペースまたはその他の無効なパス文字が含まれている場合は、パスを削除してから、もう一度ビルドしてみてください。

    これが原因である場合は、ビルド順序を調整します。


第2節):

私の特定のケース:

VSを数回再起動することで、上記のすべての手順をさまざまな順列と組み合わせで試しました。しかし、それは私を助けませんでした。

そこで、私は遭遇していた他のエラー(「ソースファイルを開くことができませんでした(「未指定のエラー」)」)を取り除くことにしました。

私はブログに出くわしました:http : //www.anujvarma.com/tfs-errorsource-file-could-not-be-opened-unspecified-error/#comment-1539

私はそのブログで言及されている手順を試してみましたが、「ソースファイルを開くことができませんでした(「未指定のエラー」)」というエラーを取り除き、驚くべきことに他のエラー(「メタデータファイルが見つかりませんでした」)も取り除きました


セクション(3):

この話の教訓:

エラーを取り除くために、上記のセクション(1)で述べたすべての解決策(およびその他の解決策)を試してください。上記のセクション(2)で述べたブログのように、何も解決しない場合は、ソース管理とファイルシステムに存在しないすべてのソースファイルのエントリを.csprojファイルから削除します



1
同僚のためにこの問題に遭遇していたので、この答えに投票してください。彼のシステムは何らかの形で依存関係のほとんどまたはすべてを失ったため、ビルド時に正しい順序でビルドされず、「whatever.dllのメタデータファイルが存在しません」が発生しました。各プロジェクトに必要なすべての依存関係を検証するために、別のシステムで彼のすべてのプロジェクトをウォークスルーしました。
jmbertucci 14

良い...私の答えがあなたを助けてくれてうれしいです。
Vikram 2014

11

以前にこの問題がありましたが、解決策を見つける唯一の方法は、Clean Solutionを実行してからVisual Studioを再起動することです。


1
それは私の状況では役に立ちません。しばらくすると、問題が再び発生します。
ナイトコーダー、2009年

これは私のためにそれを修正したものです。
スプリント

3
これも私にとってはうまくいきました。複数のクリーンアップを行い、何も機能しませんでした。クリーンアップして再起動すると、再び機能し始めました。いらいらする。
リッキー

8

私の場合、通常はターゲットフレームワークがオフになっています(4.6ではなく4.5.2)。プロジェクトのターゲットフレームワークをソリューションのターゲットフレームワークと一致するように修正してビルドすると、新しい.dllが作成されます。


以前のバージョンのVisual Studioで作成されたプロジェクトでも同じ問題が発生しました。VSを更新した後、プロジェクトが新しいバージョンの.NETで作成され、DLLが見つからない問題が発生しました。(プロジェクトのプロパティペインに移動して、.NETバージョンを表示/編集します。)ありがとうございます。
Tony S Yu

百万時間ありがとう(それは私が試した他のソリューションの数です)。これはうまくいきました。何らかの理由で、私が追加するライブラリは、他のすべてのプロジェクトとは異なる.NETフレームワークバージョンを対象としていました
Nour Lababidi

1
他のいくつかのプロジェクトで参照されている新しいクラスライブラリプロジェクト(dll)を追加しました。新しいDLLは.NET Framework 4.8でしたが、他のすべてのプロジェクトは4.7.2でした。(プロジェクトプロパティの)ターゲットフレームワークを4.7.2に変更すると、これが修正されました。アダムありがとう!
iCode


3

ほとんどのアンウェアは、ソリューションのライブラリを削除する必要があると言っていますが、これは事実ですが、ライブラリを再度追加すると、エラーが再び表示されます。参照されているすべてのライブラリに、ソリューションの.netフレームワークと互換性のある.netフレームワークがあるかどうかを確認する必要があります。次に、コード内のすべてのエラーを修正し、ソリューションを再構築します。


3

構成マネージャーの設定を確認しましたか?プロジェクト設定ダイアログの右上隅。

すべてのリリースエントリの間にデバッグエントリが入る場合があります。その場合、ソリューションの依存関係グラフによって作成された自動依存関係がすべて混乱します。


確認しました。すべてのプロジェクトの構成は同じです。
ナイトコーダー、2009年

2

また、複数のプロジェクト(通常、4.0フレームワークを対象とするように1つ以上のサブプロジェクトを更新したnetTiersプロジェクト)があるソリューションでも、このエラーが発生しました。削除するのが難しいかもしれません。ただし、多くの場合、最初にサブプロジェクトの他のすべてのエラー(たとえば、不足している参照)を修正し、それらのサブプロジェクトを個別に再構築してから、Visual Studioでそれらのサブプロジェクトへの参照を削除/追加することで解決できます。個人的には、ソリューションを単独でクリーニングしてこのエラーを解決することはほとんどできませんでした。


1
他のプロジェクト(たとえば、UIプロジェクトやテストプロジェクトなど)から参照を削除し、エラーを修正し(コアプロジェクトで)、ビルドしてから、それらの参照を再度追加するのがうまくいきました。
ケンペスピサ2011年

2

最近、Office 2007からOffice 2010にアップグレードした後、この問題に遭遇しました。プロジェクトの参照を、一部のプロジェクトで使用しているOffice相互運用機能のバージョン14に手動で変更する必要がありました。

それがお役に立てば幸いです-理解するのに数日かかりました。


2

私の場合、それは2つの原因(VS.2012)によって引き起こされました:

1)プロジェクトの1つがx86ではなくAnyCPU用に構成されました

2)参照されたプロジェクトで、「ビルド」チェックボックスが何とかオフになっている。

ビルドを確認してください| 何が構築され、どのプラットフォーム用であるかについての概要を取得するための構成マネージャー。また、設定が異なる可能性があるため、デバッグとリリースの両方を確認してください。


2

私の場合、コードにエラーがありました。Visual Studioは、構文エラーや不明なクラス名などの実際のエラーではなく、発生したエラーを表示しました。ソリューションをクリーンアップして、プロジェクトを次々に作成してみてください。このようにして、実際のエラーを発見します。

繰り返しますが、これは私にとってエラーの原因です


2

私にはこの問題があり、理解するのに長い時間がかかりました。ソリューションからプロジェクトを削除し、それらをnugetパッケージで置き換えたときに問題が発生しました。

ソリューションは問題ないように見えましたが、.csprojファイルには参照としてこれらのプロジェクトが複数回含まれていました。

VSはそのファイルを適切にクリーンアップしていないようです。削除されたプロジェクトを内部で参照していました。csprojファイルから参照を手動で削除すると、すべてが再び機能します!Wohoo


2

この問題は、pdbファイルまたはCodeContractsが原因です。

それを解決するには:

  1. 出力フォルダーをクリーンアップして、ソリューションを再構築します。

  2. CodeContractsを再構成するか、一時的なビルドのために無効にします。


2

この問題は頻繁に発生しますが、C#プロジェクトからのC ++ / CLIプロジェクトへの参照のみです。Microsoftが修正しなかったのはVisual Studioの深いバグであり、Microsoftは「複雑すぎる」ため、現在Visual Studio 2010を対象とするC ++ビルドシステムのオーバーホールを約束しているためです。

それは少し前のことでしたが、おそらく修正はVisual Studio 2008にも行われました。もうフォローしていません。ただし、私たちの典型的な回避策は

  • スイッチ構成
  • Visual Studioを再起動します。
  • ソリューションを構築する

この問題が完全に消えた後、または一時的に消えますか?「スイッチ構成」とはどういう意味ですか?たとえば、私は常にデバッグ構成を使用します。私は何をすべきか?
ナイトコーダー、2009年

一時的に消えます。実際、デバッグとリリースの間で構成を切り替えない場合は、解決策にならない可能性があります。または、リリースに切り替えてからデバッグすると、修正される可能性があります;)
OutOfMemory

さて、数日前、リリースに切り替えてソリューションを構築し、次にデバッグに切り替えました。この後問題が変異した:):今私はいくつかの代わりに1つだけ、このようなエラーが出る-それは他のプロジェクトのようなものだが、「固定」されています:)
nightcoder

2

私も同じ問題を抱えていました。

Visual Studio 2013は、それを参照できず、メタデータを見つけることができないとだけ教えてくれました。私のソリューション(複数のプロジェクトが含まれている)を開いたとき、自分のプロジェクトのフレームワークバージョンよりも低いプロジェクトを使用していると言われました。

そこで、すべてをバージョン4.5に切り替えたところ、再び機能しました。


これは、この問題が発生したときに私が行ったのと同じ解決策でした。一部のリファレンスでベースアプリケーションよりも高いフレームワークが使用されていました。ベースアプリケーションのフレームワークを4.5.2に変更すると(他のリファレンスと同じ)、問題は解消しました。しかし、VSは異なるフレームワークバージョンについては何も述べていませんでした
。– NoLifeKing

1

数か月前に同様の問題があったことを思い出しているようです。参照先のDLLをReleaseフォルダーにコピーすることで一時的に解決し、Visual Studioの期待に応えました。その後、実際のコードでリリースDLLへの参照を発見しました。プロジェクト全体で\ release \ project.dllを検索してみてください。

また、Visual Studioの単体テストプロジェクトでは、ターゲットDLLを指す各テストメソッドに「DeploymentItem」属性が設定されることがあり、デバッグとリリースを切り替えると、DLLがなくなった場合にVisual Studioが混乱する可能性があることにも気付きました。予想される場所に。私の経験では、これらの属性は、「単一デプロイメント」シナリオの一部として自分で配置しなかった場合、安全に削除できます。


1

私はこの問題を抱えていましたが、問題のあるライブラリ(dll)の無効なメソッドが原因で値が返されませんでした。たとえば、

public bool DoSomething()
{
   //I never bothered putting code here....

}

私がこれをコメントしたとき、すべてがコンパイルされました:)


私はこれと同じ答えを書くつもりでしたが、あなたがすでにこの問題について述べていることに気づきました。同じ問題がありましたが、ブール値を返さず、その問題のエラーメッセージが、事後に生成された他の多くの問題の中に隠れてしまいました。
ゴンゾブレイン2013年

1

時々、VS2010は私の構成を任意のCPUから混合プラットフォームに切り替えます。これが発生すると、このエラーメッセージが表示されます。

それを解決するには、Any CPUに切り替え
ます。1.ソリューションを右クリックして、プロパティを選択します。
2. [構成プロパティ]をクリックし、次に[構成マネージャー...]ボタンをクリックします。
3. Active solution platformでAny CPUを選択します


1

これは通常、クラスに実装されているインターフェイスにメソッド宣言がまだあるときに発生しますが、後で削除し、インターフェイスからも削除するのを忘れていたことがわかりました。通常、30分ごとにソリューション全体を保存し、エラーが見つからない場合は以前のバージョンに戻します。


1

参照を削除し(プロジェクトタブを使用して適切に追加し、以前は問題なくビルドしていました)、. csprojファイルを手動で編集して、属していない奇妙なエントリを削除し、出力をデバッグとrelease、x86、x64、およびすべてのcpuをすべて "\ bin"にします-一度ビルドしてから、リファレンスを再度追加し(もう一度、[プロジェクト]タブを使用)、すべてが再び機能し始めました。Visual Studioを再起動する必要はまったくありませんでした。


1

私にとってこれは、ビルドターゲットがdllを出力しないように書き直されたことが原因でした。これを削除してデフォルトのビルドターゲットにフォールバックすると、問題が修正されました。


1

私の場合、私はマスターからブランチに取り組んでいました。マスターブランチをチェックアウトし、ビルドを実行してから、ブランチをチェックアウトしました。問題を修正しました。すでにマスターになっている場合は、以前のコミットを確認してからビルドすることをお勧めします。


1
うわー!私は非常に多くのオプションを試しましたが、何もうまくいきませんでした。しかし、これで問題は解決しました!ありがとうメイト:)
タリンドゥ

0

それらの間に参照がある複数のプロジェクトを含むソリューションをチェックアウトし、それを以前にビルドしたことがない場合に発生するようです。プロジェクトを参照するのではなく、DLLを直接参照している場合は、このメッセージが表示されます。同じソリューション内のプロジェクトへの参照を追加するには、常に[参照の追加]ダイアログの[プロジェクト]タブを使用する必要があります。このようにして、VSはソリューションを構築する正しい順序を知ることができます


0

今日、Vidarが説明したように私にも同じことが起こりました。

ヘルパーライブラリ(他のプロジェクトで参照されている)にビルドエラーがあり、ヘルパーライブラリにエラーがあると通知する代わりに、コンパイラーはメタファイルが見つからないタイプのエラーのリストを表示します。ヘルパーライブラリのビルドエラーを修正した後、メタファイルエラーは消えました。

これを改善するためのVSの設定はありますか?


0

同じ問題がありました。プロジェクトdllにある私のdbコンテキスト(EF4)が何らかの理由で認識されないことに気付きました。私はそれを削除し、代わりに別のものを作成しました。そしてそれは私のためにそれを解決しました。


0

今日も同じ問題がありました。

私のアプリケーションであるWindowsフォームアプリケーションは、誤ってそれ自体を参照していました。変だ。

削除すると、エラーはなくなりました。

参照は、Windowsフォームプロジェクト自体にあるユーザーコントロールをフォームにドラッグするたびに追加されました。


0

私も同じ問題を抱えていました。手動でdllを削除して追加しても解決しませんでした。ClassLibrariesはすべてのプロジェクトでコンパイルされず、プロジェクトの... \ bin \ Debugフォルダーにありませんでした[ソリューションを誤ってクリーンアップしたため]。クラスライブラリがコンパイルされなかったため、これらのサブプロジェクトのいずれかにエラーが発生している可能性があります

解決策:... \ bin \ Releaseフォルダーにdllがあったため、リリースモードで再構築しようとしたところ、いずれかのサブプロジェクトの1行にエラーが見つかりました。エラーを解決してソリューションを再構築すると、ビルドエラーは解消されます。


0

私にとって、Visual Studioは「Visual Studio Solutionユーザーオプション」タイプのprojectname.v11を作成していました。このファイルを削除して再起動したところ、問題はありませんでした。

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