35

あまりにも急いで EF 5.0.0.0 RC にアップグレードし、Windows Azure (.NET 4.0 以前) にデプロイされない .NET 4.5 プロジェクトに行き詰まった後、EF 4.3.1.0 にダウングレードすることにしました。

このタイプの移行を実行する最善の方法はわかりませんが、私の戦略は、「NuGet パッケージの管理」を使用してパッケージを参照するプロジェクトを特定し、各プロジェクトからパッケージのチェックを外し、代替をインストールして正しいプロジェクトを再チェックすることです。

残念ながら、これを行った後、私のソリューションは名ばかりの「FileLoadException」を生成しました。

Could not load file or assembly 'EntityFramework, Version=5.0.0.0, Culture=neutral,        
PublicKeyToken=b77a5c561934e089' or one of its dependencies. The located assembly's 
manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

ソリューション ファイル、特に packages.config で EF 5.0.0.0 RC への参照を検索しましたが、何も見つかりませんでした。

4

12 に答える 12

43

repositories.config などで EntityFramework への参照を見つけようとして失敗した後、診断に役立てるために編集していたときに、Web.config で参照を見つけました。

bindingRedirect は、インストールされなくなった 5.0.0.0 を参照しており、これが例外の原因であると思われました。正直なところ、私はこの参照を Web.config に追加しませんでした。別のプロジェクトでエラーを複製しようとした後、NuGet パッケージ インストーラーによって追加されていないことが判明したため、なぜそこにあったのかわかりませんが、何かが追加されましたそれ。

<dependentAssembly>
  <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>

これを、作業中のプロジェクトの同等の要素に置き換えることにしました。注意: 以下では、5.0.0.0 への参照が 4.3.1.0 に置き換えられています。

<dependentAssembly>
  <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.3.1.0" newVersion="4.3.1.0" />
</dependentAssembly>

これはうまくいきました!

次に、EntityFramework のdependentAssembly 参照を完全に削除することにしました。それはまだ働いた!

これらの質問への回答にまだ興味があります。

  • EntityFramework のdependentAssembly を Web.config に追加したもの
  • これらの参照を削除した結果

私は学ぶことに興味があります。

于 2012-07-31T21:20:06.120 に答える
3

プロジェクトのビルド中に、プロジェクトのプロパティでそれが Target.NET Framework 4.5 でビルドされていることが示されている場合は、プロジェクトを 4.6 または 4.6.1 に更新します。その後、ビルドは Web.config ファイルで Entity Framework 6.0 を見つけることができます。このアプローチは私の問題を解決しました。 プロジェクトのプロパティからターゲット フレームワークを選択する

于 2016-05-24T19:33:47.213 に答える
2

Visual Studio 2012 ASP.NET Web フォーム アプリケーション テンプレートを使用した場合は、その参照を取得できます。フレームワーク System.Data.Entity 参照の代わりに Nuget 経由で取得するものだと思います。

ここに画像の説明を入力

于 2013-01-19T01:19:42.023 に答える
2

まったく同じエラー メッセージを受け取りました。EF 6.1.1 をインストールしたため、エラー メッセージに「ファイルまたはアセンブリ 'EntityFramework、Version=6.0.0.0 を読み込めませんでした...」というメッセージが表示されました。問題を解決するために私がしたことは次のとおりです。

1) [ツール] > [NuGet パッケージ マネージャー] > [パッケージ マネージャー コンソール] をクリックして、NuGet マネージャー コンソールを起動しました。2) 次のコマンドを入力して、インストール済みの EntityFramework 6.1.1 をアンインストールしました。

Uninstall-package EntityFramework

3) パッケージが正常にアンインストールされたという確認を受け取ったら、次のコマンドを入力して 5.0.0 バージョンをインストールしました。

Install-Package EntityFramework -version 5.0.0

問題は解決しました。

于 2014-10-12T19:25:33.187 に答える
1

セレンでも同様の問題がありました。NuGet を使用してセレンをダウングレードしたところ、同じエラー メッセージが表示されました。私の解決策は、app.config ファイルから新しいバージョンの行を削除することでした。

于 2013-07-03T13:22:21.357 に答える
0
public Configuration()
{
    AutomaticMigrationsEnabled = false;

    // register mysql code generator

    SetSqlGenerator("MySql.Data.MySqlClient", new MySql.Data.Entity.MySqlMigrationSqlGenerator());
}

コネクタ 6.6.4 は Entity Framework 5 では動作せず、Entity Framework 4.3 では動作することがわかりました。ダウングレードするには、パッケージ マネージャー コンソールで次のコマンドを発行します。

アンインストール パッケージ EntityFramework

インストール パッケージ EntityFramework -バージョン 4.3.1

最後に、Update-Database -Verbose をもう一度実行すると、出来上がりです! スキーマとテーブルが作成されます。コネクタの次のバージョンが Entity Framework 5 で使用できるようになるまで待ちます。

于 2013-04-12T22:01:23.010 に答える
0

同じ問題が発生しました。System.Data.Entity.Infrastructure; を取得していました。v5.0 以降の一部のみのエラー。参照を右クリックして、[NuGet パッケージの管理] を選択します。[インストール済みパッケージ] オプションで、既にインストールされている Entity Framework をアンインストールし、5.0 バージョンをインストールします。それは問題を解決します。System.Data.Entity 参照を手動で取得しようとしましたが、成功しませんでした。

于 2013-04-10T23:38:42.750 に答える