12

このエラーが発生する前に行ったことは次のとおりです。

  1. インストールされたEF(プレリリースバージョン、多分6、私は知らない)
  2. したくないと思ったので、それをアンインストールして安定版を再インストールしました(5)
  3. SSMSを介してデータベースを切り捨てました

ここにエラーがあります:

Exception calling "CreateInstanceFrom" with "8" argument(s): "Could not load file or      
assembly 'EntityFramework, Version=5.0.0.0, Culture=neutral, PublicK
eyToken=b77a5c561934e089' or one of its dependencies. The located assembly's manifest   
definition does not match the assembly reference. (Exception from H
RESULT: 0x80131040)"
At C:\Projects\BCATracker.Web\packages\EntityFramework.6.0.0- 
alpha2\tools\EntityFramework.psm1:425 char:31
+     $domain.CreateInstanceFrom <<<< (
+ CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodTargetInvocation

これが私が試したことです:

  • binディレクトリからすべてを削除し、再構築します。
  • nugetからEFを削除し、packagesディレクトリ内のファイルを削除し、nugetでefを読み取ります。

projファイルを見ると、これがわかります。

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

考えられる根本的な原因は何でしょうか?

4

9 に答える 9

17

私は問題を理解しました。EntityFramework.dll は、Visual Studio がパッケージ マネージャーから使用するために GAC に存在する必要がありました。

  1. Visual Studio コマンド プロンプトを起動します (Visual Studio を管理者として起動したことを確認してください)。
  2. パッケージ ディレクトリに移動し、EntityFramework パッケージ ディレクトリを見つけます。
  3. lib\net45 に移動します (4.5 を対象とする場合)
  4. タイプ: gacutil /i EntityFramework.dll

注: この時点でコンピュータを完全に再起動することをお勧めします。

Visual Studio が DLL を認識しなくなった理由はわかりませんが、これでこの問題は解決しました。

于 2015-01-30T22:06:24.263 に答える
1

コードファーストマイグレーションを使用しているときにも、この問題に直面しました。これを解決するには、Entity Framework のバージョンを Entity Framework Version 6.1.3 に更新するだけです。パッケージマネージャーコンソールでコマンドを使用する「Install-Package Entity Framework -version 6.1.3」

于 2015-07-31T06:39:02.433 に答える
1

はい、上記のコメントは正しいです。

EntityFramework.dll は、Visual Studio がパッケージ マネージャーから使用するために GAC に存在する必要がありました。

1. Start Visual Studio Command Prompt (ensure you started Visual Studio as Administrator) 
2. Go to your packages directory and find the    EntityFramework package directory. 
3. Go to lib\net45 (if targeting 4.5)    
4. type: gacutil /i EntityFramework.dll 

注: この時点でコンピュータを完全に再起動することをお勧めします。

C:\Windows\system32>cd..

C:\Windows>cd..

C:\>cd \packages\EntityFramework.5.0.0\lib\net45

C:..\packages\EntityFramework.5.0.0\lib\net45>
gacutil /i EntityFramework.dll

これは間違いなく機能します。

于 2016-08-19T17:38:36.040 に答える
1
  1. Manage NUGET Packages for solution... ウィンドウを開き、EntityFramework を更新します。
  2. Visual Studio を再起動します
  3. パッケージ マネージャー コンソールでコマンドを実行します Enable-Migrations -ContextTypeName Movie.Models.MovieDBContext (これはサンプル コンテキストです)
于 2015-12-01T10:17:43.310 に答える