web-dev-qa-db-ja.com

EntityFrameworkエラー:プロバイダーがProviderManifestインスタンスを返しませんでした

私のプロジェクトは、Visual Studio 2012 for Web ExpressのC#でASP.NET MVC4を使用しています。

プロジェクトをコンパイルすると、次のエラーが発生します。

プロバイダーは、ProviderManifestインスタンスを返しませんでした。ストレージのバージョンを判別できませんでした。有効なストレージ接続またはバージョンヒントが必要です。

何時間も検索した結果、エラーは何らかの形でEntity Frameworkに関連していると思います。私はこのエラーの回避策もここで見つけました: http://forums.devart.com/viewtopic.php?f=32&t=25748

回避策は、フィールドを変更することを示唆していますProviderManifestToken="2012"ProviderManifestToken="2008"私の.edmxファイル。

その後、エラーはなくなります。しかし、プロジェクトを実行すると、ランタイムエラーが発生します。

ファイルまたはアセンブリ 'Microsoft.Data.Edm'またはその依存関係の1つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。 (HRESULTからの例外:0x80131040)

===バインド前の状態情報===
LOG:DisplayName = Microsoft.Data.Edm
(部分的)
WRN:アセンブリに対して部分的なバインディング情報が提供されました:
WRN:アセンブリ名:Microsoft.Data.Edm |ドメインID:2
WRN:アセンブリ表示名の一部のみが指定されている場合、部分バインドが発生します。
WRN:これにより、バインダーが誤ったアセンブリーをロードする可能性があります。
WRN:アセンブリに完全に指定されたテキストIDを提供することをお勧めします。
WRN:単純な名前、バージョン、カルチャ、および公開鍵トークンで構成されます。
WRN:この問題の詳細と一般的な解決策については、ホワイトペーパー http://go.Microsoft.com/fwlink/?LinkId=10927 を参照してください。
LOG:Appbase = file:/// C:/ Users/Pedro/Documents/Visual Studio 2012/Projects/Dockis/Development/Dockis/Dockis /
LOG:Initial PrivatePath = C:\ Users\Pedro\Documents\Visual Studio 2012\Projects\Dockis\Development\Dockis\Dockis\bin
呼び出し元のアセンブリ:(不明)。

ログ:このバインドは、デフォルトのロードコンテキストで開始されます。
LOG:アプリケーション構成ファイルを使用:C:\ Users\Pedro\Documents\Visual Studio 2012\Projects\Dockis\Development\Dockis\Dockis\web.config
LOG:ホスト構成ファイルの使用:C:\ Users\Pedro\Documents\IISExpress\config\aspnet.config
LOG:C:\ Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.configからのマシン構成ファイルの使用。

ログ:現時点では参照にポリシーが適用されていません(プライベート、カスタム、部分的、またはロケーションベースのアセンブリバインド)。
LOG:新しいURL file:/// C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/vs/78aa89a1/af9f01eb/Microsoft.Data.Edmのダウンロードを試みています。 DLL。
LOG:新しいURL file:/// C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/vs/78aa89a1/af9f01eb/Microsoft.Data.Edm /のダウンロードを試みていますMicrosoft.Data.Edm.DLL。
LOG:新しいURL file:/// C:/ Users/Pedro/Documents/Visual Studio 2012/Projects/Dockis/Development/Dockis/Dockis/bin/Microsoft.Data.Edm.DLLのダウンロードを試みています。
LOG:アプリケーション構成ファイルを使用:C:\ Users\Pedro\Documents\Visual Studio 2012\Projects\Dockis\Development\Dockis\Dockis\web.config
LOG:ホスト構成ファイルの使用:C:\ Users\Pedro\Documents\IISExpress\config\aspnet.config
LOG:C:\ Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.configからのマシン構成ファイルの使用。
LOG:アプリケーション構成ファイルでリダイレクトが見つかりました:5.6.0.0が5.6.1.0にリダイレクトされました。
LOG:ポリシー後の参照:Microsoft.Data.Edm、Version = 5.6.1.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35
LOG:新しいURL file:/// C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/vs/78aa89a1/af9f01eb/Microsoft.Data.Edmのダウンロードを試みています。 DLL。
LOG:新しいURL file:/// C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/vs/78aa89a1/af9f01eb/Microsoft.Data.Edm /のダウンロードを試みていますMicrosoft.Data.Edm.DLL。
LOG:新しいURL file:/// C:/ Users/Pedro/Documents/Visual Studio 2012/Projects/Dockis/Development/Dockis/Dockis/bin/Microsoft.Data.Edm.DLLのダウンロードを試みています。
WRN:アセンブリ名を比較すると不一致が発生しました:ビルド番号
ERR:アセンブリのセットアップを完了できませんでした(hr = 0x80131040)。プローブが終了しました。

スタックトレース:

[FileLoadException: Could not load file or Assembly 'Microsoft.Data.Edm' or one of its dependencies. The located Assembly's manifest definition does not match the Assembly reference. (Exception from HRESULT: 0x80131040)]

[FileLoadException: Could not load file or Assembly 'Microsoft.Data.Edm, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located Assembly's manifest definition does not match the Assembly reference. (Exception from HRESULT: 0x80131040)]
   System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
   System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +34
   System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152
   System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77
   System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +16
   System.Reflection.Assembly.Load(String assemblyString) +28
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38

[ConfigurationErrorsException: Could not load file or Assembly 'Microsoft.Data.Edm, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located Assembly's manifest definition does not match the Assembly reference. (Exception from HRESULT: 0x80131040)]
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +752
   System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +218
   System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130
   System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170
   System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +91
   System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +285
   System.Web.Compilation.BuildManager.ExecutePreAppStart() +153
   System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +521

[HttpException (0x80004005): Could not load file or Assembly 'Microsoft.Data.Edm, Version=5.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located Assembly's manifest definition does not match the Assembly reference. (Exception from HRESULT: 0x80131040)]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9950728
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254

Dockisはプロジェクトの名前です。このエラーを確認した後、使用しているパッケージのバージョンのどこかにエラーがあると信じて数時間を費やしました。ただし、パッケージの大部分は最新であり、パッケージ間に競合がないため、これは当てはまらないようです。

その結果、問題はEntityFrameworkのバージョンにあると信じて戻ってきましたが、これを修正する方法については考えが足りません。

私はすべて耳です。何か提案があれば、感謝します。

16
Flame_Phoenix

どうやら、問題は私が使用していたVisual Studioバージョンでした。あなたが私に尋ねるなら、心が吹く。 Visual Studio Web Express 2012を削除してVisual Studio 2013 Ultimateをインストールした後、すべてが正常に機能し始めました。

7
Flame_Phoenix

ダウンロード http://www.Microsoft.com/en-us/download/details.aspx?id=40762 を更新し、Nuget EFを6.1.3に更新すると、すべて正常に動作します。

15
suhyura

.edmxファイルのProviderManifestToken="2012"で2012を2008に置き換えるとうまくいきました。

  1. ProviderManifestToken="2012"で2012を2008に置き換えます
  2. .edmxファイルを保存する
  3. クリーンアップとソリューションの再構築
5
Kapil Rattan

これは、.edmxファイルのProviderManifestToken = "2012"を2008に変更せずに機能しました。

.edmxファイルで、次の値をTrueからFalseに変更しました。

<edmx:DesignerProperty Name="UseLegacyProvider" Value="False" /> 

「プロバイダーは、ProviderManifestインスタンスを返しませんでした。」エラーはなくなりました。

3
Brian Robison

これは、VS2012がSQL 2012以降をサポートしていないために発生します。 ProviderManifestTokenの値を2008に変更します

2
Viktor Popov

Visual Studioの問題かどうかはわかりません。または、エンティティフレームワークがプロバイダーマニフェストを正しく認識できない。 edmxファイルを編集し、20122008<Schema ProviderManifestToken="2008" ...>に置き換えて、エラーを取り除きました

私にとっては、TeamCityを使用して自分のサイトを供給したときに、web.configファイルが変更されたためです。

ConnectionStringを削除し、System.Webコンパイルにdebug = trueを追加しました

<system.web>
    <customErrors mode="Off" />
    <authentication mode="None" />
    <compilation debug="true" targetFramework="4.5.2" />
    <httpRuntime targetFramework="4.5.2" maxRequestLength="1048576" />
    <httpModules>
      <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
    </httpModules>
  </system.web>

Manuelはweb.configファイルを修正しましたが、これは再び機能します。

0
Morten Hausted
  1. プロジェクトのある場所に移動します(ソリューションエクスプローラーを開きます。ソリューションを右クリックし、[ファイルエクスプローラーでフォルダーを開く]をクリックします)
  2. eDMXファイルをメモ帳で開き、ProviderManifestToken = "2012"をProviderManifestToken = "2008"に変更します。それを保存

  3. ソリューションを構築する

0
Saeed Az