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

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

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

该项目然后卸载并在解决scheme资源pipe理器中变灰。 我不想安装Visual Studio的另一个副本。 如何在新版本的Visual Studio中打开一个旧的MVC项目?

在Visual Studio 2012或Visual Studio 2013中打开不受支持的MVC项目实际上很容易通过两个步骤完成。 事实上,正如bytebender的评论所指出的 ,这些相同的步骤应该适用于MVC 1项目并为其工作。 但是,我没有testing它们,因此不能保证它们确实在工作。

假设你还没有完成这个步骤,下载并安装MVC 1 , MVC 2或MVC 3 (在开始安装之前closuresVisual Studio)。

一旦你有适当的MVC安装味道项目将仍然不加载在VS 2012.这是因为ASP.NET MVC项目是Web应用程序项目types的项目子types。 这意味着在Visual Studio中使用时,该项目具有可用的附加插件和function。

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

要获得项目加载你将不得不修改项目文件。 为此,请右键单击卸载的项目,然后select编辑。 这将打开项目文件作为XML文本文件。 find应该看起来像这样的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> 

保存该文件并closuresVisual Studio项目文件编辑器。 右键单击该项目并select重新加载。 如果该项目不重新closures并重新打开Visual Studio。 您现在应该可以在新版本的Visual Studio中使用旧的ASP.NET MVC项目。

一个重要的事情要注意的是,经过这些修改Visual Studio不知道这是一个ASP.NET MVC项目; 因此项目特定的function,如“添加控制器,查看等” 将不会出现在菜单中。

我用@ ahsteele的方法(感谢和2x + 1s!),但有一个进一步的错误: –

.csproj:错误:操作无法完成。 无效的类string

我找不到任何引用的真正原因,但我可以通过更改<ProjectGuid>成功加载VS2012RTM。 (不知道这是怎么发生的 – 它是一个大型解决scheme的一部分,VS08,VS10,VS11 Beta和VS2012RC都随着时间的推移升级了.csproj.sln

在VS2017中,解决scheme就是使它像<ProjectTypeGuids></ProjectTypeGuids>那样。

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

问候