如何在 VisualStudio2012或 VisualStudio2013中打开旧的 MVC 项目?

我有一个旧的 ASP.NET MVC 2项目,我不想升级到 MVC 3或 MVC 4。我正在使用一台运行 Windows8、 VisualStudio2012和 VisualStudio2013的新机器。当我尝试在 VS2012或 VS2013中打开 MVC2项目时,我收到错误消息:

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

然后在解决方案资源管理器中卸载该项目并使其变成灰色。我不想安装另一个 VisualStudio 副本。如何在新版本的 VisualStudio 中打开旧的 MVC 项目?

56587 次浏览

Visual Studio 2012或 VisualStudio2013中打开不受支持的 MVC 项目实际上很容易通过两个步骤完成。事实上,作为 Bytebender 的评论表明,这些相同的步骤 应该适用于 MVC 1项目。然而,我还没有测试它们,因此不能保证它们确实有效。

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

一旦安装了适当风格的 MVC,该项目仍然不会在 VS2012中加载。这是因为 ASP.NET MVC 项目是 Web 应用程序项目类型的 项目子类型项目子类型。这意味着当在 VisualStudio 中使用时,该项目具有可用的其他外接程序和特性。

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

若要加载项目,必须修改项目文件。为此,右键单击已卸载的项目并选择 Edit。它将以 XML 文本文件的形式打开项目文件。找到 ProjectTypeGuids节点,它应该是这样的:

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

从列表中删除适当的 ProjectGuid:

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

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

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

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

需要注意的一点是,在这些修改之后,Visual Studio 并没有意识到这是一个 ASP.NET MVC 项目; 因此,项目特有的特性,如“添加控制器,视图等”将不会出现在菜单中。

我使用了@ahsteele 的方法(感谢 + 2 x + 1 s!) ,但是还有一个错误:-

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

我找不到任何引用的真正原因,但我能够得到 VS2012RTM 成功加载项目通过改变 <ProjectGuid>。(不知道这是怎么发生的-它的一部分大型解决方案和 VS08,VS10,VS11Beta 和 VS2012RC 都升级了 .csproj.sln随着时间的推移。

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

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

问候