无法加载文件或程序集&System; Web.Mvc,Version = 3.0.0.0

时间:2014-10-18 13:28:20

标签: asp.net-mvc-3 azure

我已经查看了类似的帖子,但没有找到帮助解决此问题的帖子。

简单地说,我有一个在azure上运行的mvc3项目。几天前由于某种原因,它失去了对System.Web.MVC的引用。所以我添加了引用并将Copy Local属性更改为True。 它在本地模拟器上构建并运行ok。然后我发布了它,并在访问该网站时收到以下消息。

“无法加载文件或程序集'System.Web.Mvc,Version = 3.0.0.0”

事实证明我只有3.0.0.1版本,而不是3.0.c.0,这在我的web.congig文件中有说明。我已经尝试将程序集和运行时部分中的web.config中的值更改为3.0.0.1但是这会在azure中引发另一个异常。(虽然没有更改公共令牌)

我也尝试过添加可部署的依赖项,但这没有任何区别,我尝试下载并将3.0.0.0版本添加到项目中,但是vs在发布时不喜欢这个dll。

我也尝试将程序集的属性Specificc Version更改为False,但这没有用。

所以出于某种原因我不再使用v3.0.0.0但是我不知道如何更改我的项目以使用v3.0.0.1。

  
    应用程序中的服务器错误。

         

配置错误     描述:处理为此请求提供服务所需的配置文件时发生错误。请查看下面的具体错误详细信息并相应地修改配置文件。

         

分析程序错误消息:无法加载文件或程序集“System.Web.Mvc,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)

         

来源错误:     第39行:     第40行:     第41行:     第42行:     第43行:

         

源文件:E:\ sitesroot \ 0 \ web.config行:41

         

程序集加载跟踪:以下信息有助于确定无法加载程序集“System.Web.Mvc,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”的原因。     警告:装配绑定日志记录已关闭。     要启用程序集绑定失败日志记录,请将注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog](DWORD)设置为1。     注意:程序集绑定失败日志记录会导致一些性能损失。     要关闭此功能,请删除注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog]。

  

3 个答案:

答案 0 :(得分:4)

谢谢你的家伙。我实际上只是注释了mvc汇编的汇编代码行,并更改了运行时绑定代码以在web.config中查找v 3.0.0.1并且这已经完成了。我不确定这是否是最好的解决方案,但是花了一天时间就是一个很重要的因素。

答案 1 :(得分:1)

  • 我得到了一个非常相似的错误
  • 我的解决方案以前一直在运行,除了使用源代码管理的一些活动之外没有任何改变
  • 我创建了一个全新的工作区,并将整个源代码再次检出到新的工作区,这解决了这个问题(只是做了一个' get'以及'获取特定版本&#39 ;还不够)
    • 看起来我的工作区中出现了一些问题,导致编译器无法找到正确的.dll。可能与在GAC中找到它有关?

答案 2 :(得分:1)

我已经随机打开和关闭了这个问题一段时间,我现在知道原因了。 当您更新nuget包并且包具有web.config文件作为nuget包的一部分时,它会将nuget包中的web.config文件的内容与您的配置文件合并。 nuget包是我构建的私有包,并没有意识到这一点。

包中的web.config文件包含MVC的binging重定向,这导致我的配置文件突然出现重复的条目。我最初错过了它,因为它在一行上完成了所有绑定重定向。

删除任何重复的绑定重定向后,它会解决问题。这个问题对我找出导致这种情况的原因很有启发。