PostgresSQL と Entity フレームワークを使用して WebAPI で ASP.NET 4.5 を構成しようとしています。私は、Postgres ドライバー Npgsql の 2 つの別個のビルドがあることを発見しました。バージョン 2.0.12.0 は EF 5.0.0.0 をサポートします。EF 6.0.0.0 をサポートする別のビルド (2.0.13.91 と誤ってラベル付けされたドキュメントによると) があります。適切に動作するバージョンを入手できる限り、どのバージョンを使用してもかまいません。EF 6.0.0.0 を使用しようとするとエラーが発生し、現在 5.0.0.0 を機能させようとしています (6.0.0.0 からのエラーは別の問題であり、必要に応じて個別に投稿します)。
ここでの問題は、ある時点で既に EF 6.0.0.0 をインストールしていたため、EF 5.0.0.0 に完全にダウングレードできないことです。見つかったすべての参照を元に戻し、EF 5.0.0.0 しかインストールしていませんが、Web API アプリケーションをデプロイするか、Npgsql ドライバーを使用するコードを実行しようとすると、次のようになります。
A first chance exception of type 'System.IO.FileLoadException' occurred in System.Data.Entity.dll
A first chance exception of type 'System.IO.FileLoadException' occurred in EntityFramework.dll
iisexpress.exe Error: 0 : Operation=ReflectedHttpActionDescriptor.ExecuteAsync, Exception=System.IO.FileLoadException: Could not load file or assembly 'EntityFramework, Version=6.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)
File name: 'EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
at Npgsql.NpgsqlFactory.GetService(Type serviceType)
at System.Data.Common.DbProviderServices.GetProviderServices(DbProviderFactory factory)
6.0.0.0 の仕様がどこから来ているのかわかりません。のすべてのバージョン仕様を更新しましたweb.config
。5.0.0.0 をアンインストールして再インストールしました。MVC4 の Visual Studio 更新パッケージをアンインストールして再インストールしました。Nuget にリストされている EntityFramework パッケージは 5.0.0.0 です。パッケージ内のすべての参照アセンブリは、EF 5.0.0.0 を指定します。Npgsql を再構築し、再構築した と を登録しNpgsql.dll
ましMono.Security.dll
たgacutil.exe
。何が 6.0.0.0 を指していて、どうすれば元に戻すことができますか?
TL;DR
見つかったアセンブリは 5.0.0.0 で、これは正しいです。何らかの理由で 6.0.0.0 を探しているのですが、その理由がわかりません。