プロジェクトに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.
エラーメッセージに示されているように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と互換性がありますか?他のアセンブリのターゲットフレームワークは何ですか(存在する場合)
パスが正しいことを確認しますか? 「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ファイルでアセンブリを参照する必要がある場合もあります。
先日、バージョン管理(git)とef5-rcのNugetパッケージを使用しているときに、実際にこの問題が発生しました。私にとって問題を解決したのは、ソリューションの「パッケージ」フォルダーからアセンブリを削除(Windowsエクスプローラーで削除)することでした。 Visual Studio Nugetを再起動すると、パッケージを復元する機会が与えられました。お役に立てれば!
幸運を!
私は自分が取り組んでいるプロジェクトのためにこれを解決することになりました。エラーをスローしていたプロジェクトの.binフォルダー内のすべてを削除することになりました。これらのファイルは、特定の時間または.dllが変更されたときなどにのみ再書き込みされ、移行によって処理されなかったと思います。それらのファイルを削除し、ソリューションをクリーンアップし、再構築することで、問題が解決したようです。
私もこの問題を抱えています。そこで、少し調べてみると、次のことがわかりました。
http://msdn.Microsoft.com/en-us/data/jj618307.aspx の「一般的な問題」セクションに...
「これは通常、Redirect.configファイルなしで.NET 4アプリケーションを実行していることを意味します。Redirect.configをmigrate.exeと同じ場所にコピーし、名前をmigrate.exe.configに変更する必要があります。」
残念ながら、どこにあるのかわかりませんRedirect.config
位置しています。 NuGetパッケージのディレクトリの内容のどこにも見つかりません。
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に固定されるためです。