为什么我的MVC项目在安装WebMatrix 2 Beta后会在生产服务器上抛出异常?

时间:2011-09-23 14:18:22

标签: asp.net-mvc webmatrix

在我的开发机器上安装WebMatrix 2 Beta之后,在该机器上编译并部署到生产服务器的MVC项目将开始抛出FileNotFoundException寻找System.Web.WebPages

"...System.IO.FileNotFoundException: Could not load file or assembly 'System.Web.WebPages,
Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies.
The system cannot find the file specified.  File name: 'System.Web.WebPages, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35'..."

我在谷歌找不到任何帮助,所以我在这里要求并回答其他遇到这种情况的人。这是一个相当模糊的环境导致了这个问题。

如果您有一个相当旧的MVC项目,您已经在各个版本上升级,那么您可能会有一个对System.Web.WebPages的无版本项目引用。

<Reference Include="System.Web.WebPages" />

只要您的项目找到的版本与其部署的可用版本匹配,就可以正常工作。

安装WebMatrix 2 Beta将添加此DLL的新版本。你的MVC项目将开始拉动v2.0.0.0进行编译。当您移动到没有安装WebMatrix 2 Beta的系统时,它将无法找到v2并将抛出上述异常。

1 个答案:

答案 0 :(得分:4)

我启动了一个新的MVC 3项目,并注意到有一些引用在新项目中完全合格,在问题项目中更通用。

<Reference Include="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
<Reference Include="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />

如果切换到这些项目引用而不是通用引用(<Reference Include="..." />),则将确保使用DLL的预期版本编译项目,而不是选择系统上可用的最新版本。