web-dev-qa-db-ja.com

ファイル、アセンブリ、またはそのいずれかの依存関係をロードできませんでした

「ファイル、アセンブリ、またはその依存関係のいずれかを読み込めませんでした」という問題があります。

追加情報:ファイルまたはアセンブリ 'Microsoft.Practices.Unity、バージョン= 1.2.0.0、文化=中立、PublicKeyToken = 31bf3856ad364e35'、またはその依存関係の1つをロードできませんでした。見つかった議会のマニフェスト定義が議会の参照と一致しません。 (HRESULTからの例外:0x80131040)

これが何を引き起こしているのか、または原因を見つけるためにデバッグする方法がわかりません。

私は自分のソリューションカタログの.csprojファイル、そして私が持っているUnityがあるすべての場所で検索をしました:

参照Include = "Microsoft.Practices.Unity、バージョン= 2.0.414.0、カルチャ=ニュートラル、PublicKeyToken = 31bf3856ad364e35、processorArchitecture = MSIL"

私のどのプロジェクトでも1.2.0.0に反する参照がどこにも見つからない。

どのように私はこれを解決するために行かなければならないのですか?

私はまたこのような問題を一般的にデバッグする方法に関するヒントをいただければと思います。

207
ronag
  1. アセンブリを参照しているかどうかを確認します。アセンブリは、古いバージョンの単一性を参照しています。たとえば、古いバージョンのUnity Assemblyを必要とするServiceLocator.dllという名前のアセンブリがあるとします。今度はServiceLocatorを参照するときに、古いバージョンのUnityと一緒に提供する必要があります。

  2. すべてのプロジェクトがそれらのアセンブリを構築するための出力フォルダである可能性があり、単一の古いバージョンがあります。

FusLogVw を使用して、古いアセンブリをロードしている人を見つけ、ログのパスを定義してソリューションを実行し、Unityアセンブリがロードされている最初の行をチェックしてダブルクリックそして呼びかけの議会を見なさい、そしてここにあなたは行く。

100
Nour Sabouny

Open IIS Manager

アプリケーションプールの選択

それからあなたが使用しているプールを選択してください

詳細設定に移動します(右側)

Enable 32-bit application falseのフラグをtrueに変更します。

70
kranthi

私にとって、他の解決策はどれもうまくいきませんでした(クリーン/再構築戦略を含む)。 Visual Studioを閉じて再度開くという別の解決策を見つけました

これにより、Visual Studioはソリューションとすべてのプロジェクトを再ロードし、プロセスの依存関係を再確認する必要があります。

52
Robotnik

ソリューション内のDebugフォルダとReleaseフォルダを整理してください。その後、団結を取り除いてもう一度追加してください。

41

99%では、 ファイル、アセンブリ、またはその依存関係の1つをロードできませんでした 問題は、依存関係によって引き起こされています。この手順に従うことをお勧めします。

  1. ダウンロード 依存関係ウォーカー から http://www.dependencywalker.com/ /

  2. Dependency Walker を起動してdllを開きます(私の場合はNativeInterfaces.dll

  3. あなたは赤でエラーで1つ以上のDLLを見ることができます ファイルを開く際のエラー...

  4. それはこのdllがあなたのシステムにないことを意味します。私の場合dll名はMSVCR71.DLLです

  5. あなたはグーグルからミッシングDLLをダウンロードして、正しいパスにコピーすることができます(私の場合はc:\windows\system32

  6. この時点で、GAC(Global Assembly Cache)に新しいDLLを登録する必要があります。DOS端末を開いて、次のように書きます。

    cd \Windows\System32
    regsvr32 /i msvcr71.dll
    
  7. アプリケーションを再起動してください。

16
Stefano Lonati

以下は私のために働いた。

  • 一時ファイルC:\ Windows\Microsoft.NET\Framework\v4.0.30319 \一時ASP.NETファイルを削除します。
  • VSTSを閉じて再度開く
  • 同じDLLを削除して追加します(注:同じバージョンのDLLを追加します)。
15
Riddhi M.

Microsoft Enterprise Library(.NetTiersによって参照される)は私たちの問題でした。そしてそれは今度は古いバージョンのUnityを参照していました。この問題を解決するために、web.configで次のバインディングリダイレクトを使用しました。

<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                <bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" />
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Practices.Unity.Configuration" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                <bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

あるいは、Enterprise Libraryを最新バージョンに更新するだけでよい場合もあります。

14
Rebecca

プロジェクトのWeb.config/App.configファイルを確認してください。バージョン番号が正しいかどうかを確認してください。

<bindingRedirect oldVersion="X.X.X.X-X.X.X.X" newVersion="X.X.X.X" />

これは私のために働きました。

13
Jaseem Abbas

元の質問にもかかわらず5年前に投稿されたにもかかわらず、問題はまだ解決されず、むしろ厄介です。

一般的な解決策は、問題の原因を理解するために、参照されているすべてのアセンブリを徹底的に分析することです。この作業を容易にするために、.Netアセンブリ(.ddlまたは.exeファイル)を選択して、強調表示された競合または見逃した参照を含むすべての参照アセンブリのグラフを取得できるツール(Visual Studioの拡張機能)を作成しました。

このツールは、Visual Studio Galleryで入手できます。 https://marketplace.visualstudio.com/vsgallery/051172f3-4b30-4bbc-8da6-d55f70402734

出力例: enter image description here

11
marss

私は同様の問題を抱えていました。 ** Juntosの答えは正しい**しかしあなたは一つの重要なヒントに注意するべきです!

2.1.505.2 different AssemblyVersion および AssemblyFileVersion が指定されている。

enter image description here

AssemblyFileVersion はnugetによって使用されますが、CLRはそれを気にしません。 CLRは AssemblyVersion !のみを使用します。

そのため、リダイレクトは AssemblyVersion:2.1.505.0 で指定されたバージョンに適用する必要があります。

<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
 <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.1.505.0" newVersion="2.1.505.0" />
</dependentAssembly>
</assemblyBinding>

AssemblyVersion、AssemblyFileVersion、およびAssemblyInformationalVersionの違いは何ですか?

10
Ievgen Naida

screenshot ソリューションエクスプローラーでプロジェクト(ソリューションではない)を右クリックし、[ビルド]タブで[プラットフォームターゲット]:[Any CPU]を選択します。

9
Engin Aydogdu

私はまたこのひどい間違いを得、これのための解決策を見つけた...

  1. ソリューション名を右クリック
  2. クリーンソリューションをクリック
  3. Visual Studioを再起動します。
  4. Gotoプロジェクトプロパティ>>ビルド
  5. 構成 リリース に変更
  6. デバッグ開始(F5)

1)、2)

Right Click on the Solution name

4)、5)

Change Configuration to Release

これがあなたにも役立つことを願っています。

5
  • 後藤: 解決策 - > パッケージ
  • 詳細設定 タブをクリックします(ページの下を検索)
  • あなたの dll を追加のアセンブリに追加してください(この方法で、私たちは外部のdllをsharepointに追加することができます)。
5
Vijay Singh

私のbinフォルダの例ではUnity.MVC3と呼ばれる非参照dllでした、私は成功することなくビジュアルスタジオでこれへのあらゆる参照を検索しようとしたので、私の解決策はbinフォルダからそのdllを削除するようにとても簡単でした。

4
Totodile

ありがとうRiddhi M.次は私のために働いた。

一時ファイルを削除するC:\ Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files VSTSを閉じて再度開く同じDLLを削除して追加します(注:同じバージョンの一致を追加します)

4
Sridhar Kommana

これが役立つかどうかわからない。

アセンブリ名と、アセンブリのプロパティの[既定の名前空間]が一致していることを確認します。これで同じエラーが発生した私の問題は解決しました。

4
Sjaan

あなたは自分のソリューションにたくさんのプロジェクトがあると言っています…それでは、ビルドオーダーの一番上に近いものから始めましょう。それを構築するためにそれを手に入れて、あなたがそれを理解したら、あなたはそれらの残りに同じ修正を適用することができます。

正直なところ、あなたはおそらくあなたの参照を更新する必要があります。バージョンを更新して参照を更新していないか、ソリューションをソース管理にしている場合は相対パスの問題です。仮定を確認して、参照をもう一度追加してください。

3
Joel Martinez

この問題は、親ライブラリが "x64"のコンパイルを期待していたときに、依存ライブラリの1つが "Any CPU"でDLLをコンパイルしていたときに起こりました。

3
Creamstout10

私の場合、提案された答えはどれもうまくいきませんでした。

これは私のために働いたものです:

  1. 参照を削除
  2. DLLの名前を変更する
  3. 参照をもう一度インポートする

それがなければうまくいかなかったので、第二段階はどうやら重要でした。

2
Nicolas Raoul

I "スタートアッププロジェクトとして設定" アンロード済み/未発見のライブラリ/プロジェクト。

それを展開しました。

出来た!

最初は議会になかったので、私はそれが.dllを見つけることができなかったと思います。

2
nirav

以下は私のために働いた。

  • 一時ファイルC:\ Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Filesを削除します。
    • 次に、Temp Asp.net Files> properties> securityを右クリックして、IISおよび自分のプロジェクトを実行しているすべてのユーザーに完全なアクセス権を付与します。
2
onlyme

あなたの出力フォルダからあなたのappname.dllファイルを削除する必要があります。 DebugフォルダとReleaseフォルダをクリーンアップします。再構築して出力フォルダに再生成されたdllファイルにコピーします。

2
gucci

Enterprise Library 5を使用している.NET 4.0のための私の解決策は、参照を追加することでした:

Microsoft.Practices.Unity.Interception.dll

2
MacGyver

Unity C#なしで団結ゲームを再構築している私にとっては、プロジェクトチェックマークはうまくいきました。

2
Praful Rudra

私は今日これを持っていました、そして私のケースでは問題は非常に奇妙でした:

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin.Host.SystemWeb" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.1.0" newVersion="3.1.0.0" />
  </dependentAssembly>0.

XMLの末尾の文字に注意してください - どういうわけか、それらはバージョン番号からこのXMLブロックの最後に移動されました!

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin.Host.SystemWeb" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
  </dependentAssembly>

上記に変更しました。すべてがまたうまくいった。

2
garryp

もう1つの考えられる原因:プロジェクトプロパティで、両方のプロジェクトに同じアセンブリ名を誤って付けていないことを確認してください。

2
nathanchere

参照の[ローカルにコピー]プロパティがtrueに設定され、特定のバージョンがtrueに設定されているかどうかを確認してください。これは、Visual Studioのアプリケーションに関連しています。

矛盾する参照を探してください。クリーンで再構築した後でも、競合する参照は問題を引き起こします。私の問題はAForgeとAccordの間でした。両方の参照を削除し、特定の参照を選択し直す(私の場合は特にAccordだけ)。

2
user3791372

私はビジュアルスタジオ2015の私のWebフォームプロジェクトでこのエラーを取得し続けました。 .VisualStudio.Web.Host.exe * 32プロセスし、それは問題を解決するのに役立つようでした。

1
hackingchemist

あなたがあなたのウィンドウXP上のアプリケーションを開くことによってこのエラーメッセージを得ているなら、それは最初にあなたがそのアプリケーションをインストールしたことを意味します。あなたは両方をインストールし、再びあなたはこのエラーを受けているので、あなたは再びそのアプリを再インストールする必要がありますが最初に追加と削除からアンインストールする必要があります

これでうまくいかない場合は私を悪用しないでください。私はまたジュニアです

1
basit durrani

さて、これは非常に愚かに聞こえるかもしれませんが、他のすべての解決策を試して、この愚かなことに一夜を費やした後、私がどのように問題を解決したのか、ここにいます。

Bin FolderからDLLが見つからないという同じエラーが発生しました。 Team Foundation Serverからすべてを削除してバックアップしようとしましたが、うまくいきませんでした。私のoffice-matelocalマシンからBinフォルダーのコピーを入手し、それを交換してください。うまくいきませんでした。ついに、私は手動でサーバにFTP転送して、欠けていると表示されていたDLLのコピーを入手しました、そしてそれからファイルリストシーケンスの次のファイルが表示されなくなりました。

だから私はサーバーのすべてのBinフォルダを手に入れ、手動で各ファイルを一つずつ置き換えた。 (Ctrl + Allではなく置き換えます。私が試したところ、うまくいきませんでした。)そしてどういうわけかうまくいきました...

1
rak

私の解決策は次のとおりです。

3層アプリケーションがあり、DLLもIISの正しいパス} _にコピーするのを忘れていました。ちょうどそれを私のために働いた正しい場所にコピーした直後。

1
Beetee

私にとっては、Nugetが私のプロジェクト/ソリューションでNiceを演じていなかったようです。 NewtonSoft.JsonをインストールするためにNugetを使用しました。プロジェクトファイルが正しく参照しているように見えました。そして、Solution Explorer/Dependencies/Nugetでdll名を右クリックし、Propertiesをクリックしたとき、dllが存在するはずです。 。

Nugetパッケージを削除して、プロジェクト>追加>参照の順にR-クリックし、以前のNugetプロセスによってインストールされたときにpackagesディレクトリ内のdllを参照したところ、ソリューションは正常に実行されました。

注:このソリューションは、Xamarin.iOSソリューションから始めて.netstandardプロジェクトを追加することから始める(かなり難しいところです)(Nugetを使うのが難しいところです)。このソリューションには「ポータブル」プロジェクトもあります。私はこれらすべてを3年間行った開発者から継承しました。ハハ.

0
pdschuller

私はこの問題を抱えていました、間違いは実際には非常にばかげていました。 .dllファイルに間違った場所を指定していました 場所を正しい場所に変更した後、ロードが正しく行われました(他の誰かがこの間違いをしないように答える)。

0
student

私は同じ問題を抱えていましたが、以下の手順で解決しました:

  1. ツールメニューを開き、オプションを選択します
  2. オプションで、ウィンドウはプロジェクトとソリューション/ Webプロジェクトに移動します
  3. チェックuse the 64bit version of IIS ...

enter image description here

0
mohammad almasi