c# - unable - Error de EntityFramework: el proveedor no devolvió una instancia de ProviderManifest
su proyecto hace referencia a la version mas reciente de entity framework (8)
Mi proyecto utiliza ASP.NET MVC4, en C # con Visual Studio 2012 para Web Express.
Al compilar mi proyecto, tengo el siguiente error:
El proveedor no devolvió una instancia de ProviderManifest. No se pudo determinar la versión de almacenamiento; se requiere una conexión de almacenamiento válida o una sugerencia de versión.
Después de muchas horas de búsqueda, creo que el error está relacionado de alguna manera con Entity Framework. También encontré una solución para este error aquí: http://forums.devart.com/viewtopic.php?f=32&t=25748
La solución sugiere que cambie el campo ProviderManifestToken="2012"
a ProviderManifestToken="2008"
en mi archivo .edmx
.
Después de hacer eso el error desaparece. Pero luego tengo otro problema cuando ejecuto el proyecto, un error de tiempo de ejecución:
No se pudo cargar el archivo o ensamblaje ''Microsoft.Data.Edm'' o una de sus dependencias. La definición del manifiesto del ensamblaje localizado no coincide con la referencia del ensamblaje. (Excepción de HRESULT: 0x80131040)
=== Pre-enlace de información de estado ===
LOG: DisplayName = Microsoft.Data.Edm
(Parcial)
WRN: Se proporcionó información de enlace parcial para un ensamblaje:
WRN: Nombre del ensamblado: Microsoft.Data.Edm | ID de dominio: 2
WRN: se produce un enlace parcial cuando solo se proporciona parte del nombre de visualización del ensamblaje.
WRN: Esto puede hacer que el archivador cargue un ensamblaje incorrecto.
WRN: se recomienda proporcionar una identidad textual completamente especificada para el ensamblaje,
WRN: que consiste en el nombre simple, la versión, la cultura y el token de clave pública.
WRN: consulte el documento técnico http://go.microsoft.com/fwlink/?LinkId=109270 para obtener más información y soluciones comunes a este problema.
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
Llamando al montaje: (Desconocido).REGISTRO: este enlace se inicia en el contexto de carga predeterminado.
REGISTRO: usando el archivo de configuración de la aplicación: C: / Users / Pedro / Documents / Visual Studio 2012 / Projects / Dockis / Development / Dockis / Dockis / web.config
REGISTRO: usando el archivo de configuración del host: C: / Users / Pedro / Documents / IISExpress / config / aspnet.config
REGISTRO: usando el archivo de configuración de la máquina desde C: / Windows / Microsoft.NET / Framework / v4.0.30319 / config / machine.config.REGISTRO: la política no se aplica a la referencia en este momento (enlace de ensamblado privado, personalizado, parcial o basado en la ubicación).
REGISTRO: Intento de descargar el nuevo archivo URL: /// C: /Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files / vs / 78aa89a1 / af9f01eb / Microsoft.Data.Edm.DLL.
REGISTRO: Intento de descargar el nuevo archivo URL: /// C: /Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files / vs / 78aa89a1 / af9f01eb / Microsoft.Data.Edm / Microsoft.Data.Edm .DLL.
REGISTRO: Intento de descargar el nuevo archivo URL: /// C: / Users / Pedro / Documents / Visual Studio 2012 / Projects / Dockis / Development / Dockis / Dockis / bin / Microsoft.Data.Edm.DLL.
REGISTRO: usando el archivo de configuración de la aplicación: C: / Users / Pedro / Documents / Visual Studio 2012 / Projects / Dockis / Development / Dockis / Dockis / web.config
REGISTRO: usando el archivo de configuración del host: C: / Users / Pedro / Documents / IISExpress / config / aspnet.config
REGISTRO: usando el archivo de configuración de la máquina desde C: / Windows / Microsoft.NET / Framework / v4.0.30319 / config / machine.config.
REGISTRO: Redirección encontrada en el archivo de configuración de la aplicación: 5.6.0.0 redirigido a 5.6.1.0.
REGISTRO: Referencia posterior a la política: Microsoft.Data.Edm, Versión = 5.6.1.0, Cultura = neutral, PublicKeyToken = 31bf3856ad364e35
REGISTRO: Intento de descargar el nuevo archivo URL: /// C: /Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files / vs / 78aa89a1 / af9f01eb / Microsoft.Data.Edm.DLL.
REGISTRO: Intento de descargar el nuevo archivo URL: /// C: /Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files / vs / 78aa89a1 / af9f01eb / Microsoft.Data.Edm / Microsoft.Data.Edm .DLL.
REGISTRO: Intento de descargar el nuevo archivo URL: /// C: / Users / Pedro / Documents / Visual Studio 2012 / Projects / Dockis / Development / Dockis / Dockis / bin / Microsoft.Data.Edm.DLL.
WRN: Al comparar el nombre del ensamblaje se produjo una discrepancia: Número de compilación
ERR: no se pudo completar la configuración del ensamblaje (hr = 0x80131040). Sondeo terminado.
Traza de la pila:
[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 es el nombre del proyecto. Después de ver este error, pasé varias horas creyendo que los errores se encontraban en algún lugar de las versiones del paquete que se estaba utilizando. Sin embargo, este no parece ser el caso, ya que la mayoría de los paquetes están actualizados y no parece haber ningún conflicto entre ellos.
En consecuencia, he vuelto a creer que el problema está en la versión de EntityFramework, pero no tengo ideas sobre cómo solucionarlo.
Soy todo oídos, si tiene alguna sugerencia, los apreciaré.
- vaya a donde se encuentra el proyecto (abra el Explorador de soluciones. Haga clic con el botón derecho en la solución y haga clic en "Abrir carpeta en el explorador de archivos"
abra el archivo EDMX con el bloc de notas y cambie ProviderManifestToken = "2012" por ProviderManifestToken = "2008". guardalo
construye tu solución
Aparentemente, el problema era la versión de Visual Studio que estaba usando. Alucinante si me preguntas. Después de eliminar Visual Studio Web Express 2012 e instalar Visual Studio 2013 Ultimate, todo comenzó a funcionar como debía.
Descargue http://www.microsoft.com/en-us/download/details.aspx?id=40762 y actualice Nuget EF a 6.1.3 y todo funcionará bien.
Esto me funcionó sin cambiar el ProviderManifestToken = "2012" a 2008 en el archivo .edmx.
en el archivo .edmx, cambié el siguiente valor de Verdadero a Falso.
<edmx:DesignerProperty Name="UseLegacyProvider" Value="False" />
El "El proveedor no devolvió una instancia de ProviderManifest". el error se fue
Esto sucede porque VS2012 no es compatible con SQL 2012 y superiores. Cambie el valor de ProviderManifestToken a 2008
No estoy seguro si es un problema de Visual Studio. O simplemente el marco de la entidad no puede reconocer el manifiesto del proveedor correctamente. Me deshice del error editando el archivo edmx y reemplazando 2012
con 2008
en <Schema ProviderManifestToken="2008" ...>
Para mí fue porque cuando usé TeamCity para cumplir con mi sitio, cambió el archivo web.config.
Se eliminó connectionString y se agregó debug = true a la compilación System.Web
<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 arreglé el archivo web.config, y ahora me funciona de nuevo.
Reemplazar 2012 con 2008 en ProviderManifestToken="2012"
en el archivo .edmx funcionó para mí.
- Reemplace 2012 con 2008 en
ProviderManifestToken="2012"
- Guarde el archivo .edmx
- Limpiar y reconstruir solución