web-dev-qa-db-ja.com

Entity Framework5-ファイルまたはアセンブリEntityFramework、バージョン= 5.0.0.0を読み込めませんでした

プロジェクトにEntityFramework 5を使用しようとしていますが、アセンブリをインストールして準拠させるのに問題があるようです。また、最初にnugetを使用してこれをインストールしたので、これを期待どおりに機能させるために何をする必要があるのか​​わかりません。この問題を解決するために私がする必要があることについて何か助けがありますか?

*System.IO.FileNotFoundException:ファイルまたはアセンブリEntityFramework、Version = 5.0.0.0、Culture = Neutral、PublicKeyToken = b77a5c561934e089 '、またはその依存関係の1つを読み込めませんでしたシステムは指定されたファイルを見つけることができません.WRN:アセンブリバインディングログがオフになっています。アセンブリバインドの失敗ログを有効にするには、登録値を設定します。 。 。 *

フュージョンログを使用して、これを取得しました

*** Assembly Binder Log Entry  (7/17/2012 @ 9:29:09 PM) ***

The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable  C:\PROGRAM FILES (X86)\Microsoft VISUAL STUDIO 11.0\COMMON7\IDE\COMMONEXTENSIONS\Microsoft\TESTWINDOW\vstest.executionengine.x86.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = WORKALOT\Tokorie
LOG: DisplayName = Budget.Data, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
 (Fully-specified)
LOG: Appbase = file:///C:/Development/Summer2012BudgetApp/Budget.Service.Test/bin/Release
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = vstest.executionengine.x86.exe
Calling Assembly : Budget.Lib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\PROGRAM FILES (X86)\Microsoft VISUAL STUDIO 11.0\COMMON7\IDE\COMMONEXTENSIONS\Microsoft\TESTWINDOW\vstest.executionengine.x86.exe.Config
LOG: Using Host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based Assembly bind).
LOG: Attempting download of new URL file:///C:/Development/Summer2012BudgetApp/Budget.Service.Test/bin/Release/Budget.Data.DLL.
LOG: Attempting download of new URL file:///C:/Development/Summer2012BudgetApp/Budget.Service.Test/bin/Release/Budget.Data/Budget.Data.DLL.
LOG: Attempting download of new URL file:///C:/Development/Summer2012BudgetApp/Budget.Service.Test/bin/Release/Budget.Data.EXE.
LOG: Attempting download of new URL file:///C:/Development/Summer2012BudgetApp/Budget.Service.Test/bin/Release/Budget.Data/Budget.Data.EXE.
LOG: All probing URLs attempted and failed.
13
Kobojunkie

エラーメッセージに示されているようにfusion log toolを実行して、ランタイムがdllを探している場所に関する詳細情報を取得し、理由をよりよく理解できるようにします。失敗しています。

スコット・ハンゼルマンによる Fusion-loggning についての良い記事があり、それをどのように有効にするかなど、コマンドプロンプトから管理者としてfuslogwを実行するだけです。

更新

フュージョンログには、ランタイムがDLLを検索している場所(この場合はBudget.Data)が表示されます。

bin/Release/Budget.Data.DLL 
bin/Release/Budget.Data/Budget.Data.DLL
bin/Release/Budget.Data.EXE
bin/Release/Budget.Data/Budget.Data.EXE

DLLが実際にこれらのディレクトリの1つにあることを確認できますか?DLL(プロジェクトのプロパティを確認してください)のターゲットフレームワークを確認してください)?ターゲットフレームワークはEF5.0と互換性がありますか?他のアセンブリのターゲットフレームワークは何ですか(存在する場合)

5
Tommy Grovnes

パスが正しいことを確認しますか? 「EntityFramework」参照を削除して、手動で再度追加してみてください。

右クリックして参照を追加し、ここを参照してdllを追加します。

C:\ PATH\TO\SOLUTION\packages\EntityFramework.5.0.0-rc\lib\net45\EntityFramework.dll

また、プロジェクトのcsprojファイルにパスが設定されていることを確認します(プロジェクトを右クリックしてアンロードし、もう一度右クリックしてから[projectname.csprojを編集])。次のようになります。

<Reference Include="EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\packages\EntityFramework.5.0.0-rc\lib\net45\EntityFramework.dll</HintPath>
</Reference>

その他のチェック事項は、packages.configファイルで参照されていることを確認し、EntityFramework参照の「CopyLocal」プロパティがtrueに設定されていることを確認することです。 ASP.NETプロジェクトなどでアセンブリを使用している場合は、web.configファイルでアセンブリを参照する必要がある場合もあります。

4
Shahin Dohan

先日、バージョン管理(git)とef5-rcのNugetパッケージを使用しているときに、実際にこの問題が発生しました。私にとって問題を解決したのは、ソリューションの「パッケージ」フォルダーからアセンブリを削除(Windowsエクスプローラーで削除)することでした。 Visual Studio Nugetを再起動すると、パッケージを復元する機会が与えられました。お役に立てれば!

1
thomrand
  1. 「ローカルコピー」フラグを確認してください
  2. アセンブリdllが出力フォルダに存在することを確認してください
  3. ソリューションの参照を確認してください。 readdリファレンスを試してください。
  4. アセンブリとソリューションファイルのバージョンと公開鍵を確認します(Visual Studioソリューションファイルを開いてテキストエディターで編集できます。ソリューションファイルから公開鍵を削除し、異なる場合は正しいバージョンを設定してみてください)
  5. また、この問題は、自分が持っていなかったアセンブリへのソリューション参照に追加したアセンブリが発生した場合に発生する可能性があります。その場合は、正しいアセンブリを取得するか、お持ちのライブラリを使用してアセンブリを再構築してみてください。

幸運を!

1
gabba

私は自分が取り組んでいるプロジェクトのためにこれを解決することになりました。エラーをスローしていたプロジェクトの.binフォルダー内のすべてを削除することになりました。これらのファイルは、特定の時間または.dllが変更されたときなどにのみ再書き込みされ、移行によって処理されなかったと思います。それらのファイルを削除し、ソリューションをクリーンアップし、再構築することで、問題が解決したようです。

0
BigDubb

私もこの問題を抱えています。そこで、少し調べてみると、次のことがわかりました。

http://msdn.Microsoft.com/en-us/data/jj618307.aspx の「一般的な問題」セクションに...

「これは通常、Redirect.configファイルなしで.NET 4アプリケーションを実行していることを意味します。Redirect.configをmigrate.exeと同じ場所にコピーし、名前をmigrate.exe.configに変更する必要があります。」

残念ながら、どこにあるのかわかりませんRedirect.config 位置しています。 NuGetパッケージのディレクトリの内容のどこにも見つかりません。

0

EntLib5からどのブロックを使用していますか? DALから呼び出しているので、Microsoft.Practice.EnterpriseLibrary.Dataを呼び出していると仮定します。

もしそうなら、私はEntLib5 DAABを機能させるために、次のすべてのDLLが常に必要であることを指摘したいと思います。

Microsoft.Practices.EnterpriseLibrary.Common
Microsoft.Practices.EnterpriseLibrary.Data
Microsoft.Practices.Unity
Microsoft.Practices.Unity.Interception

これらの参照のいずれかが欠落していると、正常にコンパイルされたとしても、実行時にプロジェクトでエラーが発生します。

また、EntLib5インストーラーを http://www.Microsoft.com/en-us/download/details.aspx?id=15104 から実行してみます。これは、DLLがGACに固定されるためです。

0
Wulfram