webentwicklung-frage-antwort-db.com.de

EntityFramework-Fehler: Der Provider hat keine ProviderManifest-Instanz zurückgegeben

Mein Projekt verwendet ASP.NET MVC4 in C # mit Visual Studio 2012 für Web Express.

Beim Kompilieren meines Projekts habe ich den folgenden Fehler:

Der Provider hat keine ProviderManifest-Instanz zurückgegeben. Speicherversion konnte nicht ermittelt werden. Eine gültige Speicherverbindung oder ein Versionshinweis ist erforderlich. 

Nach vielen Stunden der Suche glaube ich, dass der Fehler irgendwie mit dem Entity Framework zusammenhängt. Ich habe auch eine Lösung für diesen Fehler gefunden: http://forums.devart.com/viewtopic.php?f=32&t=25748

Die Problemumgehung schlägt vor, das Feld ProviderManifestToken="2012" in ProviderManifestToken="2008" in meiner .edmx-Datei zu ändern. 

Danach geht der Fehler weg. Aber dann habe ich beim Ausführen des Projekts ein anderes Problem, einen Laufzeitfehler:

Datei oder Assembly 'Microsoft.Data.Edm' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Die Manifestdefinition der gefundenen Assembly stimmt nicht mit der Assemblyreferenz überein. (Ausnahme von HRESULT: 0x80131040)

=== Statusinformationen vor dem Binden ===
LOG: DisplayName = Microsoft.Data.Edm
(Teilweise)
WRN: Für eine Assembly wurden teilweise verbindliche Informationen bereitgestellt:
WRN: Assemblyname: Microsoft.Data.Edm | Domänen-ID: 2
WRN: Eine teilweise Bindung tritt auf, wenn nur ein Teil des Assembly-Anzeigenamens angegeben wird.
WRN: Dies kann dazu führen, dass die Sammelmappe eine falsche Baugruppe lädt.
WRN: Es wird empfohlen, eine vollständige Textidentität für die Assembly anzugeben.
WRN: Das besteht aus dem einfachen Namen, der Version, der Kultur und dem öffentlichen Schlüsseltoken.
WRN: Weitere Informationen und allgemeine Lösungen zu diesem Problem finden Sie im Whitepaper http://go.Microsoft.com/fwlink/?LinkId=109270 .
LOG: Appbase = Datei: /// C:/Benutzer/Pedro/Dokumente/Visual Studio 2012/Projekte/Dockis/Entwicklung/Dockis/Dockis /
LOG: Anfänglicher privater Pfad = C:\Benutzer\Pedro\Dokumente\Visual Studio 2012\Projekte\Dockis\Entwicklung\Dockis\Dockis\bin
Aufrufende Versammlung: (Unbekannt). 

LOG: Diese Bindung wird im Standardladekontext gestartet.
LOG: Verwenden der Anwendungskonfigurationsdatei: C:\Benutzer\Pedro\Dokumente\Visual Studio 2012\Projekte\Dockis\Development\Dockis\Dockis\web.config
LOG: Verwenden Sie die Host-Konfigurationsdatei: C:\Users\Pedro\Documents\IISExpress\config\aspnet.config
LOG: Verwenden der Maschinenkonfigurationsdatei unter C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. 

LOG: Die Richtlinie wird derzeit nicht auf Verweise angewendet (private, benutzerdefinierte, teilweise oder ortsbasierte Assemblybindung).
LOG: Beim Versuch, eine neue URL-Datei herunterzuladen: /// C: /Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/vs/78aa89a1/af9f01eb/Microsoft.Data.Edm.DLL.
LOG: Beim Versuch, eine neue URL-Datei herunterzuladen: /// C: /Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/vs/78aa89a1/af9f01eb/Microsoft.Data.Edm/Microsoft.Data.Edm .DLL.
LOG: Der Download der neuen URL-Datei wird versucht: /// C:/Benutzer/Pedro/Dokumente/Visual Studio 2012/Projekte/Dockis/Entwicklung/Dockis/Dockis/bin/Microsoft.Data.Edm.DLL.
LOG: Verwenden der Anwendungskonfigurationsdatei: C:\Benutzer\Pedro\Dokumente\Visual Studio 2012\Projekte\Dockis\Development\Dockis\Dockis\web.config
LOG: Verwenden Sie die Host-Konfigurationsdatei: C:\Users\Pedro\Documents\IISExpress\config\aspnet.config
LOG: Verwenden der Maschinenkonfigurationsdatei unter C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Umleitung in der Anwendungskonfigurationsdatei gefunden: 5.6.0.0 umgeleitet auf 5.6.1.0.
LOG: Referenz nach der Richtlinie: Microsoft.Data.Edm, Version = 5.6.1.0, Kultur = neutral, PublicKeyToken = 31bf3856ad364e35
LOG: Beim Versuch, eine neue URL-Datei herunterzuladen: /// C: /Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/vs/78aa89a1/af9f01eb/Microsoft.Data.Edm.DLL.
LOG: Beim Versuch, eine neue URL-Datei herunterzuladen: /// C: /Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/vs/78aa89a1/af9f01eb/Microsoft.Data.Edm/Microsoft.Data.Edm .DLL.
LOG: Der Download der neuen URL-Datei wird versucht: /// C:/Benutzer/Pedro/Dokumente/Visual Studio 2012/Projekte/Dockis/Entwicklung/Dockis/Dockis/bin/Microsoft.Data.Edm.DLL.
WRN: Der Vergleich des Assemblynamens führte zu einer Nichtübereinstimmung: Build-Nummer
ERR: Installation der Assembly konnte nicht abgeschlossen werden (hr = 0x80131040). Die Prüfung wurde abgebrochen.

Stapelverfolgung:

[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 ist der Name des Projekts. Nachdem ich diesen Fehler gesehen hatte, verbrachte ich mehrere Stunden damit zu glauben, dass die Fehler irgendwo in den verwendeten Versionen des Pakets lagen. Dies scheint jedoch nicht der Fall zu sein, da die Mehrheit der Pakete auf dem neuesten Stand ist und es keine Konflikte zwischen ihnen gibt. 

Daher bin ich wieder der Meinung, dass das Problem in der Version von EntityFramework liegt, aber ich habe keine Ideen, wie man das beheben kann.

Ich bin ganz Ohr, wenn Sie irgendwelche Vorschläge haben, werde ich sie schätzen.

16
Flame_Phoenix

Das Problem war offensichtlich die von mir verwendete Visual Studio-Version. Wahnsinnig, wenn du mich fragst. Nach dem Entfernen von Visual Studio Web Express 2012 und der Installation von Visual Studio 2013 Ultimate funktionierte alles wie geplant. 

7
Flame_Phoenix

Laden Sie http://www.Microsoft.com/en-us/download/details.aspx?id=40762 herunter und aktualisieren Sie Nuget EF auf 6.1.3. Alles wird gut funktionieren.

14
suhyura

Das Ersetzen von 2012 durch 2008 in ProviderManifestToken="2012" in der .edmx-Datei hat für mich funktioniert. 

  1. Ersetzen Sie 2012 durch 2008 in ProviderManifestToken="2012"
  2. Speichern Sie die EDMX-Datei 
  3. Lösung reinigen und neu aufbauen
3
Kapil Rattan

Dies geschieht, weil VS2012 SQL 2012 und höher nicht unterstützt Ändern Sie den Wert von ProviderManifestToken in 2008

2
Viktor Popov

Dies funktionierte für mich, ohne das ProviderManifestToken = "2012" in der .edmx-Datei in 2008 zu ändern.

in der .edmx-Datei habe ich den folgenden Wert von True in False geändert. 

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

"Der Provider hat keine ProviderManifest-Instanz zurückgegeben." Fehler ging weg. 

2
Brian Robison

Nicht sicher, ob es sich um ein Visual Studio-Problem handelt. Oder nur das Entity-Framework kann das Provider-Manifest nicht richtig erkennen. Ich habe den Fehler behoben, indem ich die edmx-Datei bearbeitet und 2012 durch 2008 im <Schema ProviderManifestToken="2008" ...> ersetzt habe.

Für mich war das so, weil ich die Website web.config geändert habe, als ich TeamCity verwendet habe, um meine Site zu erstellen.

Es entfernte das connectionString und fügte der System.Web-Kompilierung debug = true hinzu

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

Ich habe die Datei web.config manuell repariert und funktioniert jetzt wieder bei mir.

0
Morten Hausted
  1. gehen Sie dorthin, wo sich Ihr Projekt befindet (öffnen Sie den Projektmappen-Explorer. Klicken Sie auf Lösung, und klicken Sie auf "Ordner im Datei-Explorer öffnen").
  2. eDMX-Datei mit Notepad öffnen und .__ ändern. ProviderManifestToken = "2012" bis ProviderManifestToken = "2008". sparen es

  3. bauen Sie Ihre Lösung

0
Saeed Az