我的项目是使用ASP.NET MVC4,在C#中使用Visual Studio 2012 for Web Express。
编译项目时,出现以下错误:
提供程序未返回ProviderManifest实例。无法确定存储版本;需要有效的存储连接或版本提示。
经过数小时的搜索后,我认为错误与实体框架有某种关系。我还在这里找到了解决此错误的方法: http://forums.devart.com/viewtopic.php?f=32&t=25748
解决方法建议我在ProviderManifestToken="2012"
文件中将字段ProviderManifestToken="2008"
更改为.edmx
。
这样做之后,错误消失了。但是当我运行项目时出现另一个问题,即运行时错误:
无法加载文件或程序集“Microsoft.Data.Edm”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
===预绑定状态信息===
日志:DisplayName = Microsoft.Data.Edm
(部分)
警告:为组件提供了部分绑定信息:
警告:程序集名称:Microsoft.Data.Edm |域名ID:2
警告:仅提供部分装配显示名称时发生部分绑定 警告:这可能导致装订器加载错误的装配 警告:建议为装配提供完全指定的文本标识,
警告:它由简单的名称,版本,文化和公钥令牌组成 警告:有关此问题的更多信息和常见解决方案,请参阅白皮书http://go.microsoft.com/fwlink/?LinkId=109270 日志:Appbase = file:/// C:/ Users / Pedro / Documents / Visual Studio 2012 / Projects / Dockis / Development / Dockis / Dockis /
日志:初始PrivatePath = C:\ Users \ Pedro \ Documents \ Visual Studio 2012 \ Projects \ Dockis \ Development \ Dockis \ Dockis \ bin
调用程序集:(未知)。日志:此绑定在默认加载上下文中启动 日志:使用应用程序配置文件:C:\ Users \ Pedro \ Documents \ Visual Studio 2012 \ Projects \ Dockis \ Development \ Dockis \ Dockis \ web.config
日志:使用主机配置文件:C:\ Users \ Pedro \ Documents \ IISExpress \ config \ aspnet.config
日志:使用C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ config \ machine.config中的计算机配置文件。日志:此时策略未应用于引用(私有,自定义,部分或基于位置的程序集绑定)。
日志:尝试下载新的URL文件:/// C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files / vs / 78aa89a1 / af9f01eb / Microsoft.Data.Edm.DLL。
日志:尝试下载新的URL文件:/// C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files / vs / 78aa89a1 / af9f01eb /Microsoft.Data.Edm/Microsoft.Data.Edm .DLL。
日志:尝试下载新的URL文件:/// C:/ Users / Pedro / Documents / Visual Studio 2012 / Projects / Dockis / Development / Dockis / Dockis / bin / Microsoft.Data.Edm.DLL。
日志:使用应用程序配置文件:C:\ Users \ Pedro \ Documents \ Visual Studio 2012 \ Projects \ Dockis \ Development \ Dockis \ Dockis \ web.config
日志:使用主机配置文件:C:\ Users \ Pedro \ Documents \ IISExpress \ config \ aspnet.config
日志:使用C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ config \ machine.config中的计算机配置文件。
日志:在应用程序配置文件中找到重定向:5.6.0.0重定向到5.6.1.0 日志:政策后参考:Microsoft.Data.Edm,Version = 5.6.1.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35
日志:尝试下载新的URL文件:/// C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files / vs / 78aa89a1 / af9f01eb / Microsoft.Data.Edm.DLL。
日志:尝试下载新的URL文件:/// C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files / vs / 78aa89a1 / af9f01eb /Microsoft.Data.Edm/Microsoft.Data.Edm .DLL。
日志:尝试下载新的URL文件:/// C:/ Users / Pedro / Documents / Visual Studio 2012 / Projects / Dockis / Development / Dockis / Dockis / bin / Microsoft.Data.Edm.DLL。
警告:比较程序集名称导致不匹配:内部编号
错误:无法完成程序集的设置(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的版本,但我对如何解决这个问题缺乏想法。
我很满意,如果你有任何建议,我会很感激他们。
答案 0 :(得分:15)
下载http://www.microsoft.com/en-us/download/details.aspx?id=40762并将Nuget EF更新为6.1.3,一切正常。
答案 1 :(得分:7)
显然,问题是我正在使用的Visual Studio版本。如果你问我,请大笑。删除Visual Studio Web Express 2012并安装Visual Studio 2013 Ultimate后,一切都开始正常工作。
答案 2 :(得分:3)
在.edmx文件中的ProviderManifestToken="2012"
中替换2012与2008年对我有用。
ProviderManifestToken="2012"
答案 3 :(得分:2)
这对我有用,而不会在.edmx文件中将ProviderManifestToken =“2012”更改为2008。
在.edmx文件中,我将以下值从True更改为False。
<edmx:DesignerProperty Name="UseLegacyProvider" Value="False" />
“提供程序未返回ProviderManifest实例。”错误消失了。
答案 4 :(得分:2)
这是因为VS2012不支持sql 2012及更高版本。 将ProviderManifestToken的值更改为2008
答案 5 :(得分:1)
不确定它是否是Visual Studio问题。或者只是实体框架无法正确识别提供者清单。
我通过编辑edmx文件并将2012
替换为2008
<Schema ProviderManifestToken="2008" ...>
来消除错误
答案 6 :(得分:0)
用记事本打开EDMX文件并进行更改 ProviderManifestToken =&#34; 2012&#34;到ProviderManifestToken =&#34; 2008&#34;。保存 它
构建您的解决方案
答案 7 :(得分:0)
对我来说,这是因为当我使用TeamCity来删除我的网站时,它改变了web.config文件。
删除了connectionString,并将debug = true添加到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修复了web.config文件,它现在又适用于我。