13

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

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

フュージョンログを使って、これを手に入れました

*** 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.
4

7 に答える 7

5

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

Scott Hanselman によるFusion-loggingに関する優れた記事、それを有効にする方法などがあります。次に、コマンド プロンプトから管理者として fuslogw を実行します。

アップデート

Fusion ログには、ランタイムが 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 のターゲット フレームワークを確認してください (プロジェクトのプロパティを確認してください)。ターゲット フレームワークは EF 5.0 と互換性がありますか? 他のアセンブリのターゲット フレームワークは何ですか (ある場合)

于 2012-07-17T07:29:47.350 に答える
4

Are you sure the path is correct? Try to remove the "Entity Framework" reference and re-adding it manually.

Right click to add a reference, then browse here and add the dll:

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

Also make sure the path is set in the csproj file of the project (right click project, unload, right click again and then "Edit projectname.csproj"), you should have something like this:

<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>

Other things to check would be the packages.config file to make sure it's referenced there, and also make sure that the Entity Framework reference's "Copy Local" property is set to true. You might also have to reference the assembly in your web.config file if you're using it in an ASP.NET projcet or something similar.

于 2012-07-18T18:30:52.680 に答える
1

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

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

幸運を!

于 2012-07-17T09:29:10.670 に答える
0

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

于 2012-10-15T05:13:32.767 に答える
0

私もこの問題を抱えています。ということで、いろいろと調べてみたところ、以下を発見。

http://msdn.microsoft.com/en-us/data/jj618307.aspxの「一般的な問題」セクションには、次のように書かれています...

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

残念ながら、どこにあるのかわかりませんRedirect.config。NuGet パッケージのディレクトリ コンテンツのどこにも見つかりません。

于 2013-12-06T03:30:59.140 に答える
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

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

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

于 2012-07-19T00:16:18.900 に答える