在我的开发机器上安装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并将抛出上述异常。
答案 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的预期版本编译项目,而不是选择系统上可用的最新版本。