asp.net-mvc - 如何在 Visual Studio 2012 或 Visual Studio 2013 中打开旧的 MVC 项目?

标签 asp.net-mvc visual-studio visual-studio-2012 project visual-studio-2013

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

This project is incompatible with the current edition of Visual Studio

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

最佳答案

Visual Studio 2012 中打开不受支持的 MVC 项目或 Visual Studio 2013 实际上只需两个步骤即可轻松完成。事实上,如bytebender’s comment indicates ,这些相同的步骤应该适用于 MVC 1 项目并适用于 MVC 1 项目。但是,我还没有测试过它们,因此不能保证它们确实有效。

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

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

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

要加载项目,您必须修改项目文件。为此,请右键单击已卸载的项目并选择“编辑”。这会将项目文件作为 XML 文本文件打开。找到 ProjectTypeGuids 节点,它应如下所示:

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

从列表中删除适当的项目指南:

  • 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>

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

需要注意的一件重要事情是,经过这些修改后,Visual Studio 并不知道这是一个 ASP.NET MVC 项目;因此,项目特定的功能,如“添加 Controller 、 View 等”将不会出现在菜单中。

关于asp.net-mvc - 如何在 Visual Studio 2012 或 Visual Studio 2013 中打开旧的 MVC 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13424079/

相关文章:

c++ - 当构造具有 std::less 作为参数时,对象类型看起来很奇怪

javascript - VS2012中对象变量的智能感知注释

c# - 括号中带有(属性)的方法参数

c# - 如何将 MVC/C# 对象输出到 Javascript 对象?

javascript - 在 JQuery 中的 URL 内容中添加动态变量

visual-studio-2012 - EF 中的 POCO 类未按预期工作

visual-studio-2012 - Visual Studio 2012 更新 4 失败

asp.net - 可插拔/模块化开发 ASP.net MVC4

javascript - Visual Studio Code 中是否有 "immediate window"来运行 Javascript?

c# - 在 visual studio 中调试异步 C#;按预期打破异常