137

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

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

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

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

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

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

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

4

44 に答える 44

139

誰もが正しい...すべてを試してみてください...(少しから多くの時間を浪費した順に)

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

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

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

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

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

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

于 2012-01-05T10:50:28.247 に答える
16

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

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

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

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

于 2009-06-10T17:03:06.107 に答える
16

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

セクション (1):

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

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

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

  1. VS を再起動して、ビルドをやり直してください。

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

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

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

    「ソリューション エクスプローラー」に移動します。ソリューションを右クリックします。「プロジェクトの依存関係...」に移動します。「依存関係」「ビルド順序」の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 ファイルから削除します


于 2014-06-27T15:13:55.043 に答える
11

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

于 2009-06-13T19:58:17.193 に答える
8

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

于 2016-06-01T13:40:26.153 に答える
7

管理者として Visual Studio を再度開きます。

于 2015-09-24T14:55:42.743 に答える
3

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

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

于 2009-06-10T16:07:23.207 に答える
2

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

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

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

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

于 2013-01-19T14:16:43.967 に答える
2

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

それが役立つことを願っています-それを理解するのに数日かかりました.

于 2011-10-27T17:20:14.197 に答える
2

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

それは少し前のことで、おそらく修正は Visual Studio 2008 にも適用されました。それ以上はフォローしませんでした。ただし、私たちの典型的な回避策は

  • スイッチ構成
  • Visual Studio を再起動します
  • ソリューションを構築する
于 2009-06-12T14:28:49.007 に答える
2

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

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

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

于 2014-07-09T10:31:40.987 に答える
2

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

それを解決するには:

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

  2. CodeContracts を再構成するか、一時ビルド用に無効にします。

于 2010-11-05T09:08:52.463 に答える
2

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

于 2010-11-12T02:52:41.830 に答える
2

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

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

VS はそのファイルを適切に消去していないようです。フードの下で削除されたプロジェクトをまだ参照していました。csproj ファイルから参照を手動で削除すると、すべてが再び機能します。うわー

于 2016-06-07T17:27:57.263 に答える
1

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

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

于 2009-05-22T16:11:46.357 に答える
1

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

于 2014-02-19T13:21:44.860 に答える
1

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

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

}

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

于 2011-08-16T21:07:59.467 に答える
1

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

于 2013-10-04T07:16:26.830 に答える
1

VS2010 が構成を Any CPU から Mixed Platforms に切り替えることがあります。これが発生すると、このエラーメッセージが表示されます。

それを解決するために、Any CPU に戻します
。 1. ソリューションを右クリックし、プロパティを選択します。
2. [構成プロパティ] をクリックし、[構成マネージャー...] ボタンをクリックします。
3. [アクティブなソリューション プラットフォーム] で [任意の CPU] を選択します。

于 2011-12-06T20:34:38.443 に答える
1

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

于 2012-08-27T10:11:32.767 に答える
0

VS 2015 では、「参照」の下の「アナライザー」を削除すると問題が解決しました

于 2015-12-12T18:41:55.693 に答える
0

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

于 2011-09-02T19:18:42.437 に答える
0

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

もしそうなら、複数形から非複数形への移行の問題に直面している可能性があります。

私の場合、一部の古い複数形 (*) テーブル名 (SQLMETAL はデフォルトで末尾に「s」文字を追加) のテーブルが SQLMETAL によって生成されたクラスを参照していることに気付きました。

最近、Pluralization of namesを無効にしたため、データベース関連のクラスをいくつか再生成した後、それらのいくつかは「s」接頭辞を失いました。したがって、影響を受けるテーブル クラスへのすべての参照が無効になりました。このため、次のようないくつかのコンパイル エラーがあります。

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

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

影響を受けたクラス テーブルの参照を現在の名前 (複数化されていない) に手動で修正した後、ようやくプロジェクトを元に戻すことができました。

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

この投稿には多くの良いアドバイスがあります。もう1つ追加しただけです。

于 2014-05-15T11:36:53.250 に答える
0

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

于 2012-03-29T08:27:28.183 に答える
0

私にとって、Visual Studioは「Visual Studio Solution User Options」タイプのprojectname.v11を作成しました。このファイルを削除して再起動したところ、すべて問題ありませんでした。

于 2013-06-20T17:44:01.513 に答える
0

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

ヘルパー ライブラリ (他のプロジェクトから参照されている) にビルド エラーがあり、ヘルパー ライブラリにエラーがあると通知する代わりに、コンパイラは MetaFile-not-found 型エラーのリストを表示します。ヘルパー ライブラリのビルド エラーを修正した後、MetaFile エラーはなくなりました。

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

于 2011-11-25T06:56:16.213 に答える
0

同様の問題がありました。クラスとインターフェースを削除した後、ビルドが失敗し始めました。

  1. プロジェクトがビルドされないようにすべてのビルドを削除します (構成マネージャー)
  2. ビルド順序を確認します (スクリーンショットを撮り、ペイントに入れます:D)
  3. 1つずつ有効にして、そのたびにClean & Rebuildとbuildを実行します。
  4. これで、失敗したプロジェクトがわかります。:-)

私の状況では、内部に1つのインターフェースを持つフォルダーがありました。例: FooSolution.StupidProject.Interfaces インターフェース IUnicorns (FooSolution.StupidProject.Interfaces.IUnicorns) をコメントアウトして、もう使用しないようにしました。IUnicorn を使用しているプロジェクトは他にありません。すべてが大丈夫でした。

ただし...他のいくつかのプロジェクトでは、そのフォルダーへのステートメントを使用していました。

using FooSolution.StupidProject.Interfaces

解決:

  1. インターフェースにコメントする代わりに、

    //パブリック インターフェイス IUnicorn {

次のように、インターフェイスの上の名前空間にもコメントを付けました。

// namespace FooSolution.StupidProject.Interfaces
//{
//   public interface IUnicorn {
  1. 私は他のプロジェクトを検索し、その名前空間を使用していないことを確認しました!
  2. きれいにして再構築し、おいしいコーヒー;-)

結論: 他のプロジェクトでの使用を確認してください。

于 2015-09-10T13:28:31.320 に答える
0

今日もこの問題がありました。私のものは循環依存が原因でした。プロジェクト A はプロジェクト B を参照し、その逆も同様です。

于 2014-05-06T12:09:48.247 に答える
0

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

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

于 2013-05-31T08:37:42.500 に答える
0

私は同じ問題を抱えていましたが、この問題の背後にある理由は、参照プロジェクトの dll ファイルが他のプロセスによって使用されていることです。私の場合、アプリケーションをデバッグしていて、アプリケーションは Visual Studio デバッガーに接続されていました。同じプロジェクトを使用している別のアプリケーションを再構築していたときに、このエラーが発生しました。取り外した後、2 つ目のアプリケーションを正常にビルドできました。

于 2013-10-15T11:56:14.803 に答える
0

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

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

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

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

于 2012-05-02T07:30:00.617 に答える
-1

プロジェクトのパスを確認してください。カンマやスペースなどの不規則な文字は使用しないでください

たとえば、これは正しくないパスです: d:\my applications\Project1

これが真のパス d:\my_applications\Project1 です

ディスク内のパスに英数字以外の文字が含まれている場合、Visual Studio はプロジェクトをビルドできず、この障害のメッセージは表示されません。

また、一部のインストール ツールでは、インストールを開始するときに同じ問題が発生し、抽出できません。

于 2013-03-11T04:48:52.533 に答える