8

我的 ASP.NET MVC3 Web 应用程序运行良好。但是当我重新启动我的电脑然后尝试在 MS VS 2010 中更新应用程序时,它在运行应用程序期间显示错误:

Could not load file or assembly 'EntityFramework' or one of its dependencies. The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))

描述:

An unhandled exception occurred during the execution of the current web request. Please 
review the stack trace for more information about the error and where it originated in the code. 

异常详细信息: System.IO.FileLoadException:无法加载文件或程序集“EntityFramework”或其依赖项之一。参数不正确。(来自 HRESULT 的异常:0x80070057 (E_INVALIDARG))

源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

程序集加载跟踪:以下信息有助于确定无法加载程序集“EntityFramework”的原因。

警告:程序集绑定日志记录已关闭。要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) 设置为 1。注意:与程序集绑定失败日志记录相关的一些性能损失。要关闭此功能,请删除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。

堆栈跟踪:

[FileLoadException: Could not load file or assembly 'EntityFramework' or one of its dependencies. The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))]

[FileLoadException: Could not load file or assembly 'EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))]
System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +39
System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks) +132
System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +144
System.Reflection.Assembly.Load(String assemblyString) +28
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +46

[ConfigurationErrorsException: Could not load file or assembly 'EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))]
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +618
System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +209
System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130
System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +178
System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +94
System.Web.Compilation.BuildManager.CallPreStartInitMethods() +332
System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +591

[HttpException (0x80004005): Could not load file or assembly 'EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +8946484
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +97
System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +258

然后我清除所有 Windows 临时文件和 ASP.NET 临时文件,然后再次运行该应用程序。但情况并没有好转。你能帮我解决这个问题吗?谢谢。

4

5 回答 5

14

只需重新添加实体框架工具-库包管理器->包管理器控制台

类型:

安装包EntityFramework

它将恢复(您正在运行 v 4.4,这是 Visual Studio 2010 中的 v5 版本)

如果您想“干净”,可以先尝试卸载。即使失败,这也没有什么坏处。

卸载包EntityFramework
于 2012-10-06T14:29:42.180 回答
14

如果其他答案都不适合您(包括对 SO 关于同一问题的其他类似问题的答案),请尝试以下对我有用的方法(根据http://forums.devart.com/viewtopic.php?f= 3&t=26327 ):

在应用程序的 *.config 文件中添加以下 XML 以解决问题:

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" />
      <bindingRedirect oldVersion="4.4.0.0" newVersion="5.0.0.0" />
    </dependentAssembly>
    </assemblyBinding>
  </runtime>
于 2013-07-30T20:40:25.223 回答
8

确保所有项目都针对相同的 .NET Framework。我有一个 .NET 4.5 项目,它引用了一个使用 4.0 的类库,我遇到了这个问题,一旦我将其更改为 4.5,它工作正常,我可以使用 NuGet 包管理器控制台安装 EF

于 2013-02-15T16:08:56.473 回答
3

我收到了这个错误。事实证明,原因比其他一些答案更简单:我有两个项目引用了不同版本的实体框架。一个来自包含最新版本的 NuGet 包,另一个来自 ASP.NET MVC 4 模板。

我的解决方法是从 MVC 4 项目中删除对旧版本 EF (5) 的引用,并使用 NuGet 安装最新版本。之后一切都运行良好。

于 2013-11-17T05:35:56.680 回答
2

我遇到了类似的问题,我不得不手动删除解决方案中的包文件夹以及文件中对包的引用,packages.config然后使用包管理器控制台重新安装它来修复它。

于 2013-01-28T21:59:28.710 回答