「ファイル、アセンブリ、またはその依存関係のいずれかを読み込めませんでした」という問題があります。
追加情報:ファイルまたはアセンブリ '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に反する参照がどこにも見つからない。
どのように私はこれを解決するために行かなければならないのですか?
私はまたこのような問題を一般的にデバッグする方法に関するヒントをいただければと思います。
アセンブリを参照しているかどうかを確認します。アセンブリは、古いバージョンの単一性を参照しています。たとえば、古いバージョンのUnity Assemblyを必要とするServiceLocator.dll
という名前のアセンブリがあるとします。今度はServiceLocator
を参照するときに、古いバージョンのUnityと一緒に提供する必要があります。
すべてのプロジェクトがそれらのアセンブリを構築するための出力フォルダである可能性があり、単一の古いバージョンがあります。
FusLogVw を使用して、古いアセンブリをロードしている人を見つけ、ログのパスを定義してソリューションを実行し、Unityアセンブリがロードされている最初の行をチェックしてダブルクリックそして呼びかけの議会を見なさい、そしてここにあなたは行く。
Open IIS Manager
アプリケーションプールの選択
それからあなたが使用しているプールを選択してください
詳細設定に移動します(右側)
Enable 32-bit application falseのフラグをtrueに変更します。
私にとって、他の解決策はどれもうまくいきませんでした(クリーン/再構築戦略を含む)。 Visual Studioを閉じて再度開くという別の解決策を見つけました 。
これにより、Visual Studioはソリューションとすべてのプロジェクトを再ロードし、プロセスの依存関係を再確認する必要があります。
ソリューション内のDebugフォルダとReleaseフォルダを整理してください。その後、団結を取り除いてもう一度追加してください。
99%では、 ファイル、アセンブリ、またはその依存関係の1つをロードできませんでした 問題は、依存関係によって引き起こされています。この手順に従うことをお勧めします。
ダウンロード 依存関係ウォーカー から http://www.dependencywalker.com/ /
Dependency Walker を起動してdllを開きます(私の場合はNativeInterfaces.dll
)
あなたは赤でエラーで1つ以上のDLLを見ることができます ファイルを開く際のエラー...
それはこのdllがあなたのシステムにないことを意味します。私の場合dll名はMSVCR71.DLL
です
あなたはグーグルからミッシングDLLをダウンロードして、正しいパスにコピーすることができます(私の場合はc:\windows\system32
)
この時点で、GAC(Global Assembly Cache)に新しいDLLを登録する必要があります。DOS端末を開いて、次のように書きます。
cd \Windows\System32
regsvr32 /i msvcr71.dll
アプリケーションを再起動してください。
以下は私のために働いた。
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を最新バージョンに更新するだけでよい場合もあります。
プロジェクトのWeb.config/App.configファイルを確認してください。バージョン番号が正しいかどうかを確認してください。
<bindingRedirect oldVersion="X.X.X.X-X.X.X.X" newVersion="X.X.X.X" />
これは私のために働きました。
元の質問にもかかわらず5年前に投稿されたにもかかわらず、問題はまだ解決されず、むしろ厄介です。
一般的な解決策は、問題の原因を理解するために、参照されているすべてのアセンブリを徹底的に分析することです。この作業を容易にするために、.Netアセンブリ(.ddlまたは.exeファイル)を選択して、強調表示された競合または見逃した参照を含むすべての参照アセンブリのグラフを取得できるツール(Visual Studioの拡張機能)を作成しました。
このツールは、Visual Studio Galleryで入手できます。 https://marketplace.visualstudio.com/vsgallery/051172f3-4b30-4bbc-8da6-d55f70402734
私は同様の問題を抱えていました。 ** Juntosの答えは正しい**しかしあなたは一つの重要なヒントに注意するべきです!
2.1.505.2 different AssemblyVersion および AssemblyFileVersion が指定されている。
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の違いは何ですか?
私のbinフォルダの例ではUnity.MVC3と呼ばれる非参照dllでした、私は成功することなくビジュアルスタジオでこれへのあらゆる参照を検索しようとしたので、私の解決策はbinフォルダからそのdllを削除するようにとても簡単でした。
ありがとうRiddhi M.次は私のために働いた。
一時ファイルを削除するC:\ Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files VSTSを閉じて再度開く同じDLLを削除して追加します(注:同じバージョンの一致を追加します)
これが役立つかどうかわからない。
アセンブリ名と、アセンブリのプロパティの[既定の名前空間]が一致していることを確認します。これで同じエラーが発生した私の問題は解決しました。
あなたは自分のソリューションにたくさんのプロジェクトがあると言っています…それでは、ビルドオーダーの一番上に近いものから始めましょう。それを構築するためにそれを手に入れて、あなたがそれを理解したら、あなたはそれらの残りに同じ修正を適用することができます。
正直なところ、あなたはおそらくあなたの参照を更新する必要があります。バージョンを更新して参照を更新していないか、ソリューションをソース管理にしている場合は相対パスの問題です。仮定を確認して、参照をもう一度追加してください。
この問題は、親ライブラリが "x64"のコンパイルを期待していたときに、依存ライブラリの1つが "Any CPU"でDLLをコンパイルしていたときに起こりました。
私の場合、提案された答えはどれもうまくいきませんでした。
これは私のために働いたものです:
それがなければうまくいかなかったので、第二段階はどうやら重要でした。
I "スタートアッププロジェクトとして設定" アンロード済み/未発見のライブラリ/プロジェクト。
それを展開しました。
出来た!
最初は議会になかったので、私はそれが.dllを見つけることができなかったと思います。
以下は私のために働いた。
あなたの出力フォルダからあなたのappname.dllファイルを削除する必要があります。 DebugフォルダとReleaseフォルダをクリーンアップします。再構築して出力フォルダに再生成されたdllファイルにコピーします。
Enterprise Library 5を使用している.NET 4.0のための私の解決策は、参照を追加することでした:
Microsoft.Practices.Unity.Interception.dll
Unity C#なしで団結ゲームを再構築している私にとっては、プロジェクトチェックマークはうまくいきました。
私は今日これを持っていました、そして私のケースでは問題は非常に奇妙でした:
<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>
上記に変更しました。すべてがまたうまくいった。
もう1つの考えられる原因:プロジェクトプロパティで、両方のプロジェクトに同じアセンブリ名を誤って付けていないことを確認してください。
参照の[ローカルにコピー]プロパティがtrueに設定され、特定のバージョンがtrueに設定されているかどうかを確認してください。これは、Visual Studioのアプリケーションに関連しています。
矛盾する参照を探してください。クリーンで再構築した後でも、競合する参照は問題を引き起こします。私の問題はAForgeとAccordの間でした。両方の参照を削除し、特定の参照を選択し直す(私の場合は特にAccordだけ)。
私はビジュアルスタジオ2015の私のWebフォームプロジェクトでこのエラーを取得し続けました。 .VisualStudio.Web.Host.exe * 32プロセスし、それは問題を解決するのに役立つようでした。
あなたがあなたのウィンドウXP上のアプリケーションを開くことによってこのエラーメッセージを得ているなら、それは最初にあなたがそのアプリケーションをインストールしたことを意味します。あなたは両方をインストールし、再びあなたはこのエラーを受けているので、あなたは再びそのアプリを再インストールする必要がありますが最初に追加と削除からアンインストールする必要があります
これでうまくいかない場合は私を悪用しないでください。私はまたジュニアです
さて、これは非常に愚かに聞こえるかもしれませんが、他のすべての解決策を試して、この愚かなことに一夜を費やした後、私がどのように問題を解決したのか、ここにいます。
Bin FolderからDLLが見つからないという同じエラーが発生しました。 Team Foundation Serverからすべてを削除してバックアップしようとしましたが、うまくいきませんでした。私のoffice-matelocalマシンからBinフォルダーのコピーを入手し、それを交換してください。うまくいきませんでした。ついに、私は手動でサーバにFTP転送して、欠けていると表示されていたDLLのコピーを入手しました、そしてそれからファイルリストシーケンスの次のファイルが表示されなくなりました。
だから私はサーバーのすべてのBinフォルダを手に入れ、手動で各ファイルを一つずつ置き換えた。 (Ctrl + Allではなく置き換えます。私が試したところ、うまくいきませんでした。)そしてどういうわけかうまくいきました...
私の解決策は次のとおりです。
3層アプリケーションがあり、DLLもIISの正しいパス} _にコピーするのを忘れていました。ちょうどそれを私のために働いた正しい場所にコピーした直後。
私にとっては、Nugetが私のプロジェクト/ソリューションでNiceを演じていなかったようです。 NewtonSoft.JsonをインストールするためにNugetを使用しました。プロジェクトファイルが正しく参照しているように見えました。そして、Solution Explorer/Dependencies/Nugetでdll名を右クリックし、Propertiesをクリックしたとき、dllが存在するはずです。 。
Nugetパッケージを削除して、プロジェクト>追加>参照の順にR-クリックし、以前のNugetプロセスによってインストールされたときにpackagesディレクトリ内のdllを参照したところ、ソリューションは正常に実行されました。
注:このソリューションは、Xamarin.iOSソリューションから始めて.netstandardプロジェクトを追加することから始める(かなり難しいところです)(Nugetを使うのが難しいところです)。このソリューションには「ポータブル」プロジェクトもあります。私はこれらすべてを3年間行った開発者から継承しました。ハハ.
私はこの問題を抱えていました、間違いは実際には非常にばかげていました。 .dllファイルに間違った場所を指定していました 場所を正しい場所に変更した後、ロードが正しく行われました(他の誰かがこの間違いをしないように答える)。