メタデータファイル「.dll」が見つかりませんでした


723

私はWPF、C#3.0プロジェクトで作業しており、次のエラーが発生します。

Error 1 Metadata file
'WORK=- \Tools\VersionManagementSystem\BusinessLogicLayer\bin\Debug
\BusinessLogicLayer.dll' could not be found C:\-=WORK=- \Tools
\VersionManagementSystem\VersionManagementSystem\CSC VersionManagementSystem

これは私のユーザーコントロールを参照する方法です:

xmlns:vms="clr-namespace:VersionManagementSystem"
<vms:SignOffProjectListing Margin="5"/>

ビルドが失敗するたびに発生します。ソリューションをコンパイルするための唯一の方法は、すべてのユーザーコントロールをコメントアウトしてプロジェクトを再構築することです。その後、ユーザーコントロールのコメントを外すと、すべて正常です。

ビルドの順序と依存関係の構成を確認しました。

ご覧のとおり、DLLファイルの絶対パスが切り捨てられているようです...長さにバグがあることを確認しました。これは可能性のある問題ですか?

これは非常に煩わしく、コメント、ビルド、コメント解除をしなければならないため、ビルドは非常に面倒になっています。


5
私は同様の問題を抱えており(タイトルに示されているのと同じエラーが発生します)、プロジェクトをクリーンアップして再ビルドすることでそれを処理しました。正しく、他のプロジェクトを参照するために、私は..見当がつかないん
phoad

この質問には、承認されたとみなされる回答がありますか?@Matt_Broによるものは非常に良いものだと思います。
デーモンゴレム2014

4
マットの答えはほとんどの人にとってうまくいったように見えるのでマークしましたが、これは私の元の問題を解決しませんでした。私はまだそれがWindowsの最大パス制限に関連していると思います。以下の私の答えを参照してください。
オリバー


私は上記のすべての答えを試しましたが、残念ながら私の場合は何もうまくいきませんでした。2つのエラーが発生しました。1。.dllファイルがありません。2。同じパラメーターで別の場所で既に定義されているメソッド別の場所で重複している関数を削除して、2番目のエラーを最初にクリアしました。私の最初のエラー-不足している.dllファイルはそれ自体で解決されています。あなたは.dll行方不明のファイルエラーと一緒に単一のエラー以上を持っているなら言いたいです!最初に他のエラーを解決してみてください。.dllエラーがそれ自体で解決するかもしれません!
ユーザー

回答:


908

私は同じ問題を抱えていました。Visual Studioは、参照されているプロジェクトをビルドしていません。

書かれた指示:

  1. ソリューションを右クリックし、[プロパティ]をクリックします。
  2. 左側の[構成]をクリックします。
  3. 見つからないプロジェクトの[ビルド]の下のチェックボックスがオンになっていることを確認します。すでにオンになっている場合は、オフにして、[適用]をクリックし、ボックスをもう一度オンにします。
  4. (オプション)ソリューションプロパティのリリースモードとデバッグモードの両方でこれを実行する必要がありました。

画面キャプチャの手順:

  • 彼らは、絵は千の言葉の価値があると言います。GIFをクリックしてズームインすると、簡単にフォローできます。

Gif Instructions


177
また、私の場合、チェックボックスはオンになっていますが、オフにして再度オンにすると問題が解決しました。
ngm 2013年

13
これで問題が解決しました-ソリューションプロパティのリリースモードとデバッグモードの両方で実行する必要がありました。ありがとう!
theJerm 2013年

133
Simbleのチェック解除/チェックで問題が解決しなかったため、次の手順を実行する必要がありました:-クリーンソリューション-すべてのビルドチェックボックスをオフ
-VSを

27
もう1つ行うことは、プロジェクトの依存関係をそれぞれ確認することです。何らかの理由で、これが自動的に設定されていませんでした。ソリューションプロパティ->共通プロパティ->プロジェクトの依存関係。
アニチョ2014

9
uncheck-> checkが短時間動作し、問題が再発しました。その後、Visual Studioを再起動すると問題は解消しました。
DeveloperDan

224

これは、Visual Studioの新しいバージョンでも発生する可能性があります(Visual Studio 2013で発生しました)。

もう1つ試すことは、Visual Studioを閉じ.suoて、.slnファイルの隣にあるファイルを削除することです。(次回Save all(またはVisual Studioを終了)したときに再生成されます)。

別のマシンのソリューションに新しいプロジェクトを追加してからリビジョンをプルするときにこの問題が発生しましたが、.suo他の場合にもファイルが破損し、非常に奇妙なVisual Studioの動作につながる可能性があるため、削除すると、いつもやっていること。

.suoファイルを削除すると、ソリューションのスタートアッププロジェクトがリセットされることに注意してください。

.suoファイルの詳細はこちらです。


24
これで問題が解決しました。言及する価値があるのは、.suoファイルが隠されていることです。したがって、隠しファイルを表示するようにエクスプローラを設定する必要があります。
ジョージハワース

6
Xamarinプロジェクトで作業しています。.suoファイルは.vs /フォルダーにあります。削除してみたが問題は解決しなかった

VS2013-TFSワークスペースを別の場所に移動する必要がありました。これを完了した後、このエラーが発生し始めました。souファイルの削除は私にとってはうまくいきました。
Vin

40
これも私にとってはうまくいきました。ただし、Visual Studio 2015では、.suoファイルは非表示であり、の.vs横の非表示ディレクトリ内にあります.sln。例:ソリューションファイルがc:\foo\mysolution.sln次に検索される場合c:\foo\mysolution\.vs\mysolution\v14\.suo
Wyck '25

6
VS2017では、簡単にするために、.vs代わりに隠しフォルダーを削除しただけで、.suoファイルも削除されました。私はソリューションを再開し、もう1つの無関係なエラーを修正し、問題は解決しました。
user3613932

183

提案された答えは私にとってはうまくいきませんでした。エラーは別の問題のおとりです。

わずかに異なるバージョンの.NETをターゲットにしていることがわかり、これはコンパイラによって警告としてフラグが立てられましたが、ビルドが失敗していました。これは警告ではなくエラーとしてフラグを立てられているはずです。


9
プロジェクトのフレームワークを、プロジェクト>プロパティ>アプリケーション>ターゲットフレームワークを右クリックして、警告メッセージに示されている上位バージョンに一致させることで修正できました。
強く型付けさ

1
vs2015を使用して私も同じです。
bruno.bologna

うん。私にも同じことが起こった。VS 2015
KevinDeus

ありがとう!これで私の問題は解決しました。プロジェクトを.Net Framework 4.7.1にアップグレードした後のVS 2015。
DHoover 2018

うわー、これは私のためにそれを修正しました。新しいプロジェクトは別の.netバージョンを対象としていました。vs2017でも、これに対するチェックがないとは信じられません。
Douglas Gaskell 2018年

104

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

セクション(1):

一般的な解決策:

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

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

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

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

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

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

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

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

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

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


第2節):

私の特定のケース:

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

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

ブログ投稿に遭遇しました:TFSエラー-ソースファイルを開くことができませんでした(「不明なエラー」)

私はそのブログ投稿に記載されている手順を試しましたが、「ソースファイルを開くことができませんでした(「不明なエラー」)」というエラーを解消しましたが、驚くべきことに、他のエラー(「メタデータファイルが見つかりませんでした」)解消しました上手。


セクション(3):

この話の教訓:

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


4
私の問題は、ビルドの順序/プロジェクトの依存関係でした。他のプロジェクトからの参照の削除と追加はこれを修正します(私は思う)が、あなた自身もそれを行うことができます。
ナハト-モニカを2015年

4
私は.NET v4.5プロジェクトをダウングレードしてこの問題に直面しました.NET v.4
guneysus

1
参照されたdllパスから「%」を削除すると役立ちました
役に立ち

1
セクション2の解決策は私にとってうまくいきました!私は別のエラーがあり、修正したときに他の人は魔法のように消えた。
マーティンヨハンソン

1
Boogierと同じ問題がありました。フォルダー名にスペースではなく%20があり、dllがスペースを探していました。実際の修正が最も簡単なときに、他のすべての修正を試すのに多くの時間を費やしました。
レニーK

38

私の場合、.NET Frameworkのバージョンの不一致が原因でした。

1つのプロジェクトは3.5で、もう1つのプロジェクトは4.6.1です。


2
これは、4.5.2 V間でも発生します。4.6
AzzamAziz 2017

2
確かに、私は4.6.1の1つを持っていて、残りは4.5.2でした、ありがとう!
メイソン

7
はい、フレームワークのバージョンが異なるといつでもそうなります。グレートエラーマイクロソフト!
エリックシュナイダー

うん!プロジェクトが.Net 4.6.1のときに.Net 4.7.1 .dllを使用しようとしました。警告は他のアイテムによって非表示にされましたが、それに関するエラーはありませんでした。私のエラーは赤いニシンでした
Esaith

29

Visual Studio 2013を閉じて再度開くとうまくいきました。


gitの変更をプロジェクトファイルに戻した後にこの問題が発生しました。VS2015を再起動し、問題を解決しました
Ludovic C

これは、承認済みの回答としてマークする必要があります。チェックボックスのチェック/チェック解除に時間がかかります。
Alex

1
それでも、感謝をVS2019でこの問題を抱えて、これは私のためにそれを固定
pcdev

20

さて、以前の回答では何も役に立たなかったので、開発者としてここで何が起こっているのかを本当に理解しようとする必要があるのに、なぜ私がクリックして期待しているのかを考えさせられました。

この不正確なメタデータファイルの参照はどこかに保持する必要があることは明らかでした。

.csprojファイルをすばやく検索すると、有罪の行が示されました。<itemGroup>というセクションがあり、古い不正なファイルパスにぶら下がっているように見えました。

<ItemGroup>
    <ProjectReference Include="..\..\..\MySiteOld\MySite.Entities\MySite.Entities.csproj">
        <Project>{5b0a347e-cd9a-4746-a3b6-99d6d010a6c2}</Project>
        <Name>Beeyp.Entities</Name>
    </ProjectReference>
...

だから、本当に簡単な修正:

  1. .csprojファイルをバックアップします。
  2. .csprojファイルで誤ったパスを見つけ、適切に名前を変更します。

してくださいあなたがいじる前に、必ずバックアップ古い.csprojします



14

私もこの問題に遭遇しました。まず、ビルドを右クリックして、DLLプロジェクトを手動でビルドする必要があります。その後、動作します。


14
この修正は機能しますが、実際には問題は修正されず、より根本的な問題につながる可能性があります。まず、リポジトリ内のコードで作業している場合、新しい開発者がコードを構築するポイントに到達するまでフープを飛ばす必要があるのは悪いことです。第二に、参照先のプロジェクトの変更を確認するには、毎回手動でプロジェクトを再ビルドする必要があります。問題に対するより強力な修正については、私の回答を参照してください。
Matt_Bro 2013

私の場合、プロジェクトを個別にビルドすることすらせず、同じエラーが発生します。私のプロジェクト名が "proj1"だとしましょう。私が(手動で言ったように)ビルドすると、Metadata file ...proj1.dll could not be found
A-Sharabiani 2017年

14

私の場合、間違った方法でインストールしたディレクトリがあります。

ソリューションパスが「My Project%2c Very Popular%2c Unit Testing%2c Software and Hardware.zip」のようなものである場合、メタデータファイルを解決できません。おそらく%2cのような無効な単語を防ぐ必要があります。

パスの名前を通常の名前に変更すると、問題が解決しました。


1
提供するソリューションについてもう少し説明を追加して、回答を詳しく説明していただけますか?
abarisone 2015年

私のgitクローンはフォルダパスに%を追加し、これらを削除して問題を解決しました。
Erik Bergstedt 2016年

@abarisoneパスから "%2c"文字列を削除し、それが機能しました
masphei

1
それも私の問題でした。プロジェクトを複製したときに、単純なスペースの代わりに「%20」を使用してプロジェクトに名前が付けられました。@abarisoneに感謝します。あなたのアプローチは私の問題を解決しました。
MAコルデイロ

TFSからプロジェクトを複製すると、何らかの理由で%20も追加されました。削除することで問題も解決しました。
セルティエン

13

同じエラー「メタデータファイル '.dll'が見つかりませんでした」が発生し、上記のいくつかのことを試しましたが、エラーの理由は、.NETバージョンより高いバージョンを対象としたサードパーティのDLLファイルを参照していたためですプロジェクトのターゲットが.NETバージョンであること。したがって、解決策は私のプロジェクトのターゲットフレームワークを変更することでした。


さて、私は同じことを答えようとしていました。私の場合、.Net 4.5.xをターゲットとする新しいプロジェクトを追加し、そのプロジェクトから、.Net 4.6を使用していたプロジェクトへの参照を追加したときにそれが起こり始めました。
ファン

12

Visual Studio 2019はこれでうまくいきました:

  1. Visual Studioを閉じる
  2. 非表示を削除 .vsフォルダを
  3. Visual Studioを再度開き、ソリューションを再構築します。

本当にありがとうございました。これは、失敗したビルドをもう1つ実行した後、私にとってもうまくいきました。
Iamsodarncool

ありがとう、これでうまくいきました。
iaacp

10

私にとっては、プロジェクトを含むために使用されていたパスでDLLを見つけようとしていましたが、それを新しいディレクトリに移動しました。ソリューションにはプロジェクトへの正しいパスがありましたが、Visual Studioは何とか古い場所を探し続けました。

解決策:問題のある各プロジェクトの名前を変更します-キャラクターなどを追加するだけで、元の名前に戻します。

これにより、Visual Studioのある種のグローバルキャッシュがリセットされます。これにより、この問題と同様の問題の両方がクリアされますが、Cleanなどはクリアされません。


10

私のソリューションに新しいプロジェクトを追加し、これを取得し始めました。

理由?私が持ち込んだプロジェクトは、別の.NETフレームワーク(4.6と他の2つは4.5.2)をターゲットにしていました。


1
なぜなのか今はわかりませんが、そのようなプロジェクトを1年間続けていました。私のサブプロジェクトは4.6.1で、メインプロジェクトは4.5.2でした。問題なく動作しました。突然このエラーが発生しましたが、サブプロジェクトをダウングレードしたくありません。サブプロジェクトには4.6.1に存在する機能があるため、これが問題であるとは思いません。Microsoftはそれがまだ機能しているはずだと説明しています
batmaci

TLDR:コンパイル警告を確認します。これは私に起こったことですが、ひねりを加えています。projsは4.5.2でした。4.6に新しいプロジェクトを追加しました。4.6プロジェクトにnugetパッケージをインストールしました。4.6プロジェクトを4.5.2にダウングレードしました。Nugetsは4.6を期待していました。nugetsのダウングレードが解決されました。
w00ngy 2018

9

私にとっては、ソリューションに新しいプロジェクトを組み込んだときに発生しました。

Visual Studioは自動的に.NET Framework 4.5を選択します。

他のライブラリと同様にバージョン.NET 4.5.2に変更しましたが、うまくいきました。


8

私にとっては、次の手順が機能しました:

  • ビルドしていないプロジェクトを見つける
  • ソリューション内のプロジェクトへの参照を削除/追加します。

ソリューションエクスプローラーで参照「フォルダー」を右クリックし、「未使用の参照を削除」します。私はこのソリューションのすべてのプロジェクトでこれを行いました。それはトリックを行いました
Mathieu VIALES '14 / 07/14

8

私もこの問題で髪を引っ張っていましたが、前の回答を試した後、私のために働いた唯一のことは、ソリューションの各プロジェクトを1つずつ開き、個別にビルドすることでした。

次に、Visual Studio 2013を閉じ、ソリューションを再度開いたところ、問題なくコンパイルされました。

奇妙なことに、ソリューションエクスプローラーで各プロジェクトをクリックして、その方法でビルドしようとすると、すべて失敗しました。私はそれらを自分のソリューションで一人で開かなければなりませんでした。


1
うーん、これ。マイクロソフトが再稼働するために再起動が必要なものはたくさんあります。
Yatrix 2016

8

Visual Studioがエラーに関する正しい情報を提供しないという事実に関連する、この種のエラーのように見えます。開発者はビルドが失敗した理由を理解していません。構文エラーなどの原因が考えられます。一般に、このような問題を解決するには、問題の根本を見つける必要があります(たとえば、ビルドログを確認します)。

私の場合、問題は実際にはError Listウィンドウにエラーが表示されなかったことでした。しかし、実際には構文エラーがありました。Outputウィンドウでこれらのエラーを見つけ、修正した後、問題は解決しました。


私もこの問題を経験しました。エラーリストにはエラーはありませんでしたが、DevOpsで失敗したビルド結果はエラーを示しました
amartin

7

問題の私のインスタンスは、(別のファイル名の下で)重複するクラス名を持つ一般的なプロジェクトによって引き起こされました。Visual Studioがそれを検出できず、代わりにビルドプロセスを破壊したのは奇妙です。


これはコメントですか、回答ですか、それとも新しい質問ですか?また、OPは2009年からのものであることにも注意してください
gmo

8
同じ問題に対する追加の解決策です。OPが古いことは知っていますが、最後のいくつかの投稿に基づいて、人々はまだ他の原因を見つけています。他の解決策のどれも私にとってうまくいかなかったので、次の男にいくつかの欲求不満を保存しようとしています。
エリック

4
私は誰かの反応を批判するのではなく、同じ症状に対する代替ソリューションを提供するだけです。
エリック

7

Visual Studio 2012では、多くのプロジェクトを含むソリューションでこの問題が発生しました。ソリューションの各プロジェクトを、プロジェクトのビルド順序(右クリックしてソリューションエクスプローラーで再ビルド)と同じ順序で手動で再ビルドすると、修正されました。

最終的に、コンパイルエラーが発生するエラーメッセージが表示されました。私はエラーを修正し、その後ソリューションは正しく構築されました。


私の場合、管理者モードでVisual Studio 2015を開くまで、エラーは非表示でした。その後、コンパイルエラーが表示されました。それを修正した後、私は続けることができました。
SLバース-モニカを

6

私の場合の問題は、「欠落」とマークされた非コンパイルファイルを手動で削除したことです。なくなったファイルへの参照を削除して再コンパイルしたら、すべて順調でした。


6

ソリューション名にスペースがある場合、これも問題の原因になります。ソリューション名からスペースを削除して、パスに%20が含まれないようにすると、これを解決できます。


あなたは天才です!!
Itamar

それを理解する前にあなたのコメントを見ませんでした。しかし、これは私の問題でした。
Lジョンソン


6

私の場合、問題は単純なビルドエラーが原因でした。

エラーCS0067:イベント 'XYZ'は使用されません

何らかの理由で、エラーウィンドウに表示されませんでした。

そのため、Visual Studioビルドシステムはエラーを見逃しているようで、依存プロジェクトをビルドしようとしましたが、そのプロジェクトは厄介なメタデータメッセージで失敗しました。

推奨事項は、次のように聞こえます。

最初に出力ウィンドウを見てください

このアイデアが私に当たるまで30分かかりました...


誰もがこの答えに目を向けるべきだと思います。ビルド出力ウィンドウを見て、エラーや警告がないか確認して修正します。問題が解決しました。回答をありがとうございます。
キャプテンアメリカ

5

私も同じエラーがありました。以下のパスのように非表示になります。DLLファイル用に参照したパスは、「D:\ Assemblies Folder \ Assembly1.dll」のようなものです。

ただし、アセンブリが参照する元のパスは "D:\ Assemblies%20Folder \ Assembly1.dll"でした。

このパス名のバリエーションが原因で、アセンブリを元のパスから取得できなかったため、「メタデータが見つかりません」エラーがスローされました。

解決策はStack Overflowの質問にありますC#ですべてのスペースを%20に置き換えるにはどうすればよいですか?


5

私も同じ問題に直面しました。私の場合、プロジェクトよりも高い.Netバージョンのクラスライブラリプロジェクトを参照しましたが、VSはプロジェクトのビルドに失敗し、投稿した同じエラーが発生しました。

私は単純に設定.NETバージョン参照プロジェクトの.NETバージョンと同一の私のクラスライブラリプロジェクト(ビルドが壊れていた1)のをし、問題が解決しました。


1
この!!!上記の答えは良かったが、これは私が完全に見落としたものだった。ありがとうございます。
Rhys Johns

@RhysJohnsハッピーコーディング:)))
Code_Worm 2018

4

はっきりと指摘しているだけです。「ビルドの開始時に出力ウィンドウを表示する」が有効になっていない場合は、ビルドが失敗しているかどうかを確認してください(左下の小さな「ビルド失敗」エラー)。


私は最近似たようなものを持っています-エラーログには何百ものcs0006エラーがありましたが、他には何もありませんでした(そして私は非常に細かい櫛でそれをとかしました)。最終的に(!)[出力]ウィンドウを見ることを考えたところ、コンパイラエラーが報告されました。コードでは、エラーの下に赤い波線が表示されていました。[エラー]ウィンドウにエラーが報告されなかった理由がわかりません。VS2017 Enterprise。
2018年

4

Webアプリケーションを公開しようとしたときにこのエラーが発生しました。クラスプロパティの1つが次のようにラップされていることが判明しました

#if DEBUG
    public int SomeProperty { get; set; }
#endif

しかし、プロパティの使用はそうではありませんでした。公開はDEBUG、明らかにシンボルなしのリリース構成で行われました。


4

エラーメッセージに基づいて、ファイルパスが切り詰められているとは思いません。正しくないようです。メッセージを正しく読んでいる場合は、DLLファイルを探しているようです...

WORK =-\ Tools \ VersionManagementSystem \ BusinessLogicLayer \ bin \ Debug \ BusinessLogicLayer.dll

これは有効なパスではありません。ビルドプロセスのマクロ定義が無効な値に設定されている可能性はありますか?


何も変更しておらず、カスタムビルドイベントや構成もないので、私は知らない
Oliver

4

.nuget\NuGet.exeがリポジトリに含まれていないため、この問題が発生しました。DownloadNuGetExeNuGet.targetsで有効にしましたが、ダウンロードしようとするとプロキシエラーが報告されました。これにより、プロジェクトの残りのビルドが失敗しました。


4

このエラーは、偽のアセンブリを使用している場合に表示されることがあります。偽物を削除すると、プロジェクトのビルドが成功します。


「偽のアセンブリ」とは何ですか?詳しく説明できますか?(あなたの答えを拡大して返信してください。)
Peter Mortensen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.