153

我有一个旧的 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 项目?

4

3 回答 3

292

在Visual Studio 2012或 Visual Studio 2013 中打开不受支持的 MVC 项目实际上很容易通过两个步骤完成。事实上,正如bytebender 的评论所表明的那样,这些相同的步骤应该适用于 MVC 1 项目并适用于 MVC 1 项目。但是,我没有对它们进行测试,因此不能保证它们确实有效。

假设您尚未这样做,第一步是下载并安装MVC 1MVC 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>

从列表中删除相应的项目指南:

  • 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 项目。因此,特定于项目的功能,如“添加控制器、视图等”。不会出现在菜单中。

于 2012-11-16T20:39:05.927 回答
4

我使用了@ahsteele 的方法(感谢和 2x+1s!),但又出现了一个错误:-

.csproj:错误:操作无法完成。无效的类字符串

我找不到任何关于其真正原因的引用,但我能够通过更改<ProjectGuid>. (不知道这是怎么发生的——它是大型解决方案的一部分,VS08、VS10、VS11 Beta 和 VS2012RC 都随着时间的.csproj推移进行了升级.sln

于 2013-02-01T11:58:51.590 回答
1

在 VS2017 中,解决方案就是让它像<ProjectTypeGuids></ProjectTypeGuids>这样。

女士们和先生们之间不要有空格,否则会浪费您 48 小时的时间。

问候

于 2017-05-12T12:27:38.327 回答