如何在Visual Studio 2012或Visual Studio 2013中打开旧的MVC项目?

ahs*_*ele 152 asp.net-mvc project visual-studio visual-studio-2012 visual-studio-2013

我有一个旧的ASP.NET MVC 2项目,我不想升级到MVC 3或MVC 4.我正在开发一台运行Windows 8,Visual Studio 2012和Visual Studio 2013的新机器.当我尝试打开MVC时VS 2012或VS 2013中的2个项目我收到错误:

此项目与当前版本的Visual Studio不兼容

然后在解决方案资源管理器中卸载该项目并显示为灰色.我不想安装另一个Visual Studio副本.如何在新版本的Visual Studio中打开旧的MVC项目?

ahs*_*ele 290

Visual Studio 2012或Visual Studio 2013中打开不受支持的MVC项目实际上很容易通过两个步骤完成.实际上,正如bytebender的注释所示,这些相同的步骤应该适用于MVC 1项目并为其工作.但是,我没有对它们进行测试,因此无法保证它们确实可以正常工作.

假设您还没有这样做,第一步是下载并安装MVC 1,MVC 2MVC 3(在开始安装之前关闭Visual Studio).

一旦安装了适当的MVC风格,项目仍然无法在VS 2012中加载.这是因为ASP.NET MVC项目是Web应用程序项目类型的项目子类型.这意味着在Visual Studio中使用时,项目具有可用的附加插件和功能.

Visual Studio 2012和Visual Studio 2013都与ASP.NET MVC和其他项目类型的向后兼容性有限.不幸的是,安装旧的MVC位没有改变这一点.Visual Studio 2012与ASP.NET MVC 3和4项目风格兼容.Visual Studio 2013与MVC 4和MVC 5 兼容.

要加载项目,您必须修改项目文件.为此,请右键单击已卸载的项目,然后选择"编辑".这将打开项目文件作为XML文本文件.找到ProjectTypeGuids应该看起来像这样的节点:

<ProjectTypeGuids>
    {F85E285D-A4E0-4152-9332-AB1D724D3325};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
</ProjectTypeGuids>
Run Code Online (Sandbox Code Playgroud)

从列表中删除相应的Project Guid:

  • ASP.NET MVC 1: {603c0e0b-db56-11dc-be95-000d561079b0}
  • ASP.NET MVC 2 :( {F85E285D-A4E0-4152-9332-AB1D724D3325} 如上例所示)
  • ASP.NET MVC 3: {E53F8FEA-EAE0-44A6-8774-FFD645390401}
  • ASP.NET MVC 4: {E3E379DF-F4C6-4180-9B81-6769533ABE47}

删除适当的GUID后,ProjectTypeGuids应该看起来类似于:

<ProjectTypeGuids>
    {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
</ProjectTypeGuids>
Run Code Online (Sandbox Code Playgroud)

保存文件并关闭Visual Studio项目文件编辑器.右键单击该项目,然后选择重新加载.如果项目没有重新加载关闭并重新打开Visual Studio.您现在应该能够在新版本的Visual Studio中使用旧的ASP.NET MVC项目.

需要注意的一件重要事情是,在这些修改之后,Visual Studio不知道这是一个ASP.NET MVC项目; 因此,项目特定功能,如"添加控制器,查看等" 将不会出现在菜单中.

  • 这也适用于MVC 1.编辑项目文件后我无法重新加载.我不得不关闭并重新打开visual studio,然后才能加载MVC 1项目.谢谢!+1 (11认同)
  • @RyanShripat根本不是我的经验.必须安装旧版本的ASP.NET MVC,但VS 2010对上述内容没有影响. (3认同)
  • @JookyDFW迁移实用程序的问题是*它是一个迁移实用程序*.由于在这个特定项目的问题中未列举的原因,我无法从MVC 2升级.即使项目无法升级,我仍然需要处理它.按照概述修改项目文件是在VS 2012中使用MVC 2项目的最佳(唯一?)方式. (2认同)
  • 谢谢它的作用,也适用于VS 2013(预览版) (2认同)
  • @Nanu感谢您的评论,要明确这就是我的意思:"*需要注意的一件重要事情是,经过这些修改后,Visual Studio不知道这是一个ASP.NET MVC项目;因此特定于项目"添加控制器,视图等"等功能将不会出现在菜单中.*" (2认同)