web-dev-qa-db-ja.com

Visual Studio-編集の続行後に「メタデータファイル 'XYZ'が見つかりませんでした」というエラーが表示される

私は本当に迷惑な問題に出くわしました。
ソフトウェアをデバッグすると、すべてが正常に実行されますが、ブレークポイントにヒットしてコードを編集すると、実行を継続しようとするとエラーが発生します。
Metadata file 'XYZ' could not be found

しばらく見て回った後、いくつかの 類似の問題 が見つかりましたが、それらはすべてビルドの失敗に関するもので、これは私の場合ではありません(これはedit-continueの後にのみ発生します)。

私がこれまでに試したこと:

  • コードをコンパイルして実行しています。
  • ソリューションをクリーンアップし、VSを再起動しました。
  • 欠落しているファイルのプロジェクトが、実行中の構成(構成マネージャーで)用にビルドされていることを確認しました。
  • 不足しているファイルのプロジェクトを手動でビルドしました。

いくつかの追加情報

  • 何を変更しても、同じエラーが発生します(変更は、欠落しているファイルとは関係ありません)。
  • これは、ブレークポイントだけでなく、一時停止して続行するときにも発生します
  • カスタム構成(構成マネージャー...)を使用してプロジェクトを実行しています。デフォルトのDebug構成を使用して実行すると、エラーは発生しません。

何か案は?

69
Avi Turner

最終的に問題を解決したのは:

  1. すべてのプロジェクトを個別にクリーニングします(右クリック> クリーン)。
  2. すべてのプロジェクトを個別に再構築します(右クリック> 再構築)。
  3. スタートアッププロジェクトを再構築します。

何らかの理由で、ソリューションをクリーニングするだけで、すべてのプロジェクトを個別に個別にクリーニングするのとは異なる効果があったと思います。

編集:
@ maplemaleのコメントにあるように、各参照の削除と再追加も必要になる場合があります。

2019年更新:
この質問は過去に大量のトラフィックを獲得しましたが、VS 2017がリリースされて以来、あまり注目されていなかったようです。
したがって、別の提案として-VSの新しいバージョン(> = 2017)に更新し、その他の新機能の中でもこの問題も解決されます。

100
Avi Turner

私が知る限り、これは何らかの理由でプロジェクトの依存関係が台無しになったときに起こります(プロジェクト間の参照はすべてそのままです)。多くの場合、これはコードの問題ではありません。また、数件以上のプロジェクトがある場合は、一度に1つずつプロジェクトを進めることはできません。

プロジェクトの依存関係をリセットするのは簡単です-

  1. すべてのプロジェクトを選択し、右クリックしてアンロードします
  2. すべてのプロジェクトを選択し、右クリックして再読み込み
  3. 再構築ソリューション

コードに問題がある場合、またはこの問題を引き起こしている他の問題がある場合は、明らかにその問題を最初に解決する必要があります。

41
Ben Wilde

考えられる理由の1つは、(ソリューション内の)一部のプロジェクトをより高いバージョンにアップグレードした可能性があります。 .NET 4.0から4.5へこれは、VS 2013(VS 2010および.NET 4.0を使用して作成された)でソリューションを開いたときに私のケースで発生しました。 VS 2013で開くと、C++プロジェクトが.NET 4.5に更新され、問題が発生し始めました。

13
JSK

一般に、この種のエラーには、名前空間を不適切な方法で変更したり、現在のプロジェクトのエクスプローラーからフォルダー名を変更したりするなど、コンパイラーが時々検出できないような人為的なミスが伴います。

私はいくつかの手順を試したのを解決するために、同じエラーに出くわしました。すべての手順に従ってください:

  1. ソリューション全体をきれいにする
  2. ソリューションのすべてのプロジェクトを右クリックし、プロパティに移動して、デフォルトの名前空間とデフォルトのアセンブリ名をコードと同じにします(つまり、クラス名の前の名前空間)
  3. エクスプローラー(プロジェクトソリューションの場所)を使用して、各プロジェクトのフォルダー名を確認します。プロジェクト名と一致しない場合は、プロジェクト名と同様にします(手順2など)。
  4. 同じソリューションの別のプロジェクトに関連する各プロジェクトからすべての参照を削除し、再度追加します。
  5. プロジェクトソリューションフォルダーに、Visual c#プロジェクトファイルがあります。右クリックしてメモ帳で開きます。最初の行では、次のようなevery projectの行があります。

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "**Client**", "**Client** \ **Client**.csproj", "{4503E259-0E3B-414A-9074-F251684322A5}" EndProject

フォルダー名(太字で強調表示)を再度確認し、手順2で行ったことと同様にします。

  1. ソリューション全体を再度クリーニングします

  2. ソリューションをビルドする(うまくいかない場合は、再度クリーニングした後に個別にビルドしてみてください)

10
Pratik Shah

すべての依存プロジェクトが同じ.Net Frameworkバージョンを使用していることを確認してください。 4.5.1を使用する依存プロジェクトが原因で同じ問題が発生しましたが、他のすべてのプロジェクトは4.5を使用していました。プロジェクトを4.5.1から4.5に変更し、ソリューションを再構築すると、この問題が修正されました。

7
Mark Stratman

まだ構築されていないため、XYZが見つかりませんでした。..

ソリューションを右クリックして[プロジェクトの依存関係]をチェックすると、設定されている依存関係に従ってプロジェクトのビルド順序も変更されます。

4
batman

私のために働いた唯一のことは、ソリューションユーザーオプション(.suo)ファイルを削除することでした。これは隠しファイルです。

このファイルを見つけるには、Virsualスタジオを閉じて、プロジェクト内のファイルエクスプローラーから.suoを検索します。

Delete the .suo file

PS:プロジェクトをリビルドすると、新しい.suoファイルが再び作成されます。この新しく作成されたファイルが問題を引き起こさないことを願っています。

誰かがこの厄介なエラーを取り除くのに役立つことを願っています:)。

3
Tshilidzi Mudau

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

セクション(1):

一般的なソリューション:

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

「メタデータファイルが見つかりませんでした」というエラーを取り除きました。そのために、私は多くの投稿、ブログなどを読んで、これらのソリューションが効果的であるかもしれないことを見つけました(ここでそれらを要約します):

VSを再起動して、もう一度ビルドしてみます。

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

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

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

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

不足している.dllのパスを確認します。

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

これが原因である場合は、ビルド順序を調整してください。

2

何日もこの問題がありました!上記のすべてを試しましたが、問題が再発し続けました。このメッセージが表示される場合、「ソリューション内の1つ以上のプロジェクトが正常にコンパイルされなかった」という意味を持つことがあるため、ファイルのメタデータは書き込まれませんでした。しかし、私の場合、他のコンパイラエラーは見られませんでした!!!私は各ソリューションを手動でコンパイルしようと努力を続けましたが、VS2012に以前に見たことのないコンパイラエラーを実際に明らかにさせた後、この問題は消えました。

私は、ビルドオーダーではなく、ビルドオーダーではなく、デバッグdll(手動でコンパイルされた)を参照していました...

コンパイル時に、コンパイラがいくつかのエラーで存在するように見える場合があります。過去に、問題を修正した後、後続のコンパイルで新しいエラーが表示されることがあります。なぜそれが起こるのかはわかりませんが、これらの問題が発生することはめったにありません。ただし、このように使用している場合、何が起こっているのかを見つけようとするのは非常に苦痛です。がんばろう!

2
John Peters

プロジェクトでSQLMETALなどのデータベースコード生成ツールを使用していますか?

その場合、複数化から複数化への移行の問題に直面している可能性があります。

私の場合、いくつかの古い複数形(*)テーブル名(デフォルトではSQLMETALが最後に "s"文字を追加します)テーブルがSQLMETALによって生成されたクラスを参照することに注意しました。

最近、私は名前の複数形化を無効にしたので、いくつかのデータベース関連のクラスを繰り返した後、それらのいくつかは "s"プレフィックスを失いました。したがって、影響を受けるテーブルクラスへの参照はすべて無効になりました。このため、次のようないくつかのコンパイルエラーがあります。

「xxxx」には「TableNames」の定義が含まれておらず、タイプ「yyyy」の最初の引数を受け入れる拡張メソッド「TableNames」が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)

ご存知のように、私はアセンブリのコンパイルを防ぐためにエラーのみを取ります。そして、それは不足しているアセンブリが依存アセンブリにリンク可能であり、元の「メタデータファイル 'XYZ'が見つかりませんでした」

影響を受けたクラステーブルの参照を現在の名前(複数化されていない)に手動で修正した後、プロジェクトを生き返らせることができました!

(*)オプションVisual Studio> ツールメニュー> オプション> データベースツール> O/Rデザイナー>- 名前の複数形化が有効になっています。一部のSQLMETALlコードジェネレーターは、生成されたいくつかのテーブルクラスの最後に「s」文字を追加します。 。詳細については、 http://msdn.Microsoft.com/en-us/library/bb386987(v = vs.110).aspx を参照してください。

それが役に立てば幸い!

1
Julio Nobre

私の5セント。

この問題は、ソリューション全体をきれいにした後に始まりました。

Active Solutionの構成を[ビルド]-> [構成マネージャーをリリース]に設定して、問題を解決しました。その後、ビルドして、デバッグ用に設定し直します。その後、ビルドは成功しました。

1
Yeronimo

VSを閉じ、Visual Studioの外部から「パッケージ」フォルダーを見つけて削除します。 VSを再起動してビルド->すべての依存関係が再インストールされます

1
tfa

同じ問題がありました。私の場合、誤ってメインアプリケーションをコンソールアプリケーションとして使用するプロジェクトとは別にすべてのプロジェクトを設定していました。

解決するために、私はメイン機能右クリック> properites>出力タイプ>クラスライブラリを持つプロジェクト以外のすべてのプロジェクトに行きました

0
diva

新しいビルドの場合、一部の依存関係がインストールされていない可能性があります。私にとってはCrystal Reportsでした。

0
Roberto

名前空間に奇妙な衝突があるので、それは私に起こりました:名前空間AssemblyA.ParentNamespace witchを持つAssemblyAがClassAを定義し、同じAssemblyAという名前の別の名前空間AssemblyA.ParentNamespace.ChildNamespace witchが異なるClassAを定義しました(しかし、同名)

その後、AssemblyA.ParentNamespaceにIInterfaceB witchがあり、最初にIEnumerableを返すメソッドがあり、ClassB witchはIInterfaceBを実装していました

後でClassBのメソッドを変更してIEnumerableを返すようにしましたが、IInterfaceB定義を更新するのを忘れていたので、IEnumerableを返すメソッドはまだ楽しいものでしたが、すべてを再構築すると、ソリューションはまだコンパイルされますが、テストは魔女ですAssemblyAが機能しなかったことを示し、「メタデータファイルが見つかりませんでした」エラーを返します。

実装者ClassBが問題を解決したため、IEnumerableを正しく返すようにInterfaceBを更新しました。残念ながら、エラーメッセージはあいまいでした。また、コンパイルが機能したという事実から、おそらくコンパイラに修正すべきものがあると思います

0
Mosè Bottacini

これは、1つのプロジェクトdllが失敗し、それが多数のプロジェクトによって参照されている場合に発生します。最初に修正してから、個人をビルドします。

0

これは、フォルダー名と名前空間名の名前の違いが原因で発生します。特定の名前で名前空間を作成し、後で名前を変更すると、名前空間自体が古い名前になります。そして、コンパイルは.dllおよび.exeファイルを見つけるために古いパスを取ります。これを回避するには、各ネームスペースの.csprojファイルをテキストファイルで開き、ファイル内の古いパスを見つけます。

これを削除し、ソリューションをクリーンアップして再構築します。これは私のために働いた。私は丸一日、この問題に取り組みました。

0
Sooraj Chandran

同僚がこの問題にぶつかり、原因がわからなくなっていました。最終的に、プロジェクトディレクトリ(およびNuGetパッケージへのパス)には%20(ありがとう、名前を付けないGit guiツール)が含まれていることがわかり、エラーメッセージはコンパイラが非常に似たパスを探していることを示しましたが、それは%20でなくてはならないスペースでした。どうやらビルドシステムのどこかで、ローカルファイルシステムパスでHTMLデコードが実行されているようです。

作業コピーディレクトリの名前を変更すると、すべてが機能し始めました。

0
Ben Voigt

私はこれを持っていて、このSO回答を使用して修正することができました: メタデータファイル '.dll'が見つかりませんでした

すべてのボックスのチェックを外し、[適用]をクリックし、すべてのチェックボックスを再度有効にしてから[適用]を再度クリックする必要がありましたが、問題は修正されました。

0
Karl Gjertsen

私はこの問題を抱えており、新しいプロジェクトとしてTFSにソリューションをインポートした後に開始しました。このトピックに出会い、回答からインスピレーションを得た簡単なソリューションを見つけました。

メタデータファイルを失ったと思われるプロジェクトを再構築するだけで問題が解決しました。

0
Enver A

このエラーが発生しました。ここですべてのソリューションを実行しましたが、何も機能しませんでした。 Visual Studio 2013 Professionalを使用していました。個々のプロジェクトの再構築を機能させることができず、最終的に参照に循環依存があることがわかりました。 Visual Studioは、通常、後方参照するものへの参照を追加している場合に警告を発しますが、何らかの理由でこのインスタンスには含まれていません。作業中のプロジェクトを参照するプロジェクトへの参照を追加し、それを受け入れました。 VSバグ?

0

私はちょうどこの問題に遭遇し、1時間ねじ回した後、私の製品にaspxファイルを追加しましたLinq-To-Sql =クラス。
「キュー」のクラスとページ。
ページをQueueMgr.aspxに変更し、すべてがうまく構築されました。

0
Ted Krapf

また、もう1つの愚かな理由があります。これは、忍耐力で確認する必要があります。答えを探して4時間を無駄にした後、私にはそれが発生したためです。

私にとっての話は、何千ものc#クラスファイル間で誤って小さなコード行を変更し、ソリューションを再構築しようとしたということでした。ご想像のとおり、40以上のメタデータファイルのエラーが欠落し、そのうち1つのコンパイルエラーが発生しました。すべてのエラーが同じであると純粋に考えて慎重にチェックしませんでした。

4時間検索し、誤ってエラーリストをダブルチェックした後、その愚かなコードエラーが見つかり、それを修正し、コンパイルして、エラーが消えました。

あなたの問題に対する良い答えではありませんが、私の場合があなたのものと同じではなかったことを願っています。

0
Lida Weng