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


152

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

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

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


你为什么知道这个问题?
布莱恩·怀特

30
@BrianWhite今天早晨遇到这个问题时,我在Google上进行了快速搜索,但没有提出任何建议。由于我熟悉VS项目文件的工作方式,因此我对原因和可能的解决方案有所猜测。一旦我确认该解决方案有效,我就想分享这些知识。根据Jeff的指南,可以提出和回答自己的问题
ahsteele 2012年

1
谢谢,我不知道。我还没有发布很多东西,因为我没有看到有人在这里寻找它。
布莱恩·怀特

8
ahsteele,感谢您发布解决方案。找到解决方案后,回答自己的问题将为社区增加知识。
pomarc 2014年

Answers:


291

实际上,只需两个步骤,就很容易在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>

从列表中删除适当的项目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>

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

需要注意的重要一件事是,在进行了这些修改之后,Visual Studio并不知道这是一个ASP.NET MVC项目。因此,特定于项目的功能(例如“添加控制器,视图等”)将不会出现在菜单中。


11
这也适用于MVC 1。编辑项目文件后,我无法重新加载。我必须关闭并重新打开Visual Studio,然后它才能加载MVC 1项目。谢谢!+1
bytebender 2012年

1
优秀的!在我的.cspproj中为我工作了一点...在我的.cspproj中,我有一个额外的projectTypeGuid:{F85E285D-A4E0-4152-9332-AB1D724D3325}; 需要删除的。
凯文(Kevin)

2
@JookyDFW迁移实用程序的问题在于它是一个迁移实用程序。由于该特定项目的问题中未列举的原因,我无法从MVC 2进行升级。即使无法升级该项目,我仍然需要进行处理。修改项目文件概述的是最好的(唯一?)的方式来工作,在2012年VS的MVC 2项目
ahsteele

3
@RyanShripat根本不是我的经验。必须安装旧版本的ASP.NET MVC,但VS 2010对此没有影响。
ahsteele

2
@Nanu谢谢您的评论,明确的是我的意思是:“ 要注意的重要一点是,在进行这些修改之后,Visual Studio并不知道这是一个ASP.NET MVC项目;因此,特定于项目的功能例如“添加控制器,视图等”将不会出现在菜单中。
ahsteele 2014年

4

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

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

我找不到引起这种情况的真正原因,但是通过更改,我能够使VS2012RTM成功加载项目<ProjectGuid>。(不知道这是怎么发生-一个大的解决方案,它的一部分VS08,VS10,VS11 Beta版和VS2012RC都升级.csproj.sln随着时间的推移。


1

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

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

问候

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.