Visual Studio 2012不转换vs2010解决scheme?

我使用vs2012打开了vs2010解决scheme,但从2008年到2010年没有进行任何转换。 所以我的解决scheme仍然保持与10标签相同。 当我做一个新的解决scheme,当然它有11个标签。 我没有遇到任何问题,但我很好奇。 有什么区别吗? 如果是的话,如何转换成vs2012解决scheme?

有一些例外 ,但大多数情况下 ,您可以在VS2012和VS2010 SP1中打开相同的项目和解决scheme文件文件。

当你第一次打开项目时,VS2012 可能会转换项目,但是VS2010向后兼容的变化(除了在链接的文档中指出的)(即使用条件只需要在加载时适用于任何版本)大多数项目types将完全保持原样。

我设法“转换”解决scheme文件,将包含'#Visual Studio 2010'的行更改为.SLN文件中的'#Visual Studio 2012'。

解决scheme文件的手动编辑是不必要的,或build议。 只需打开VS2012中的VS2010解决scheme,左键单击解决scheme(位于解决scheme资源pipe理器的顶部),然后使用“ 文件” |“ 另存为覆盖原始文件。 这将有效地将VS2010解决scheme文件转换为VS2012解决scheme文件。

这是关于Visual Studio 2012兼容性

如果您在带有Service Pack 1(SP1)的Visual Studio 2010中创build资产,则其中许多资源将在Visual Studio 2012中加载并运行,而无需您做任何进一步的操作。

即使在Visual Studio 2012中打开这些资产之后,许多资产也将在Visual Studio 2010 SP1中再次打开,而不会出现任何问题

对于C ++项目来说,它是有区别的,因为2012版编译器(VC11)只能用于明确2012的项目,而不能用于VS 2012中打开的2010项目。VC11编译器提供了一些C ++ 11改进function, VC10 (见这个答案摘要),包括:

  • 基于范围的循环
  • 新的标准库头(primefaces,互斥,线程…)
  • 较小的标准库容器大小
  • ( 当2012年11月份的CTP交付给VS 2012 时,还有更多关注 )

为了从VS 2010项目转换到VS2012 ,没有必要手动编辑解决scheme文件或“另存为”现有的项目 。 代替:

如果在第一次提示时拒绝更新,则可以稍后通过打开“ 项目”菜单并select“ 更新VC ++项目…” (位于菜单选项顶部)来更新项目。

从MSDN的“ 如何:将Visual C ++项目升级到Visual Studio 2012 ”
(这个页面从@ Joachim的MSDN链接链接 ,但我想在这里有答案,因为一些其他答案build议手动解决方法,而不是这个VS 2012function)

在我的情况下,我有一些Visual Source Safe的东西(我的项目是用Visual Studio 2003/2005创build的,是的,很老!)

一旦我手动删除VSS的东西,转换成功。 PS:我知道这是关于VS2010,但也许这有助于其他人。

您可以通过执行以下操作将项目从VS2010转换为VS2012:

  1. 通过在解决scheme资源pipe理器中右键单击解决scheme,然后select添加 – >现有项目,将2010项目添加到您的VS2012解决scheme中。

  2. 该项目将出现在解决scheme中,并将(Visual Studio 2010)附加到其名称。

  3. 右键单击添加的项目,然后select“属性”。

  4. 在“configuration属性” – >“常规”窗格中,将“平台工具集”字段中的设置更改为Visual Studio 2012(v110)

  5. 对每个configurationtypes重复,例如Release和Debug。

我遇到这个问题的同时search一个特定问题的解决scheme:MSBuild无法执行发布目标对VS2012解决scheme,从命令行(特别是通过TeamCity)调用时,在VS2010中开始生活:

error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Windows Azure Tools\2.3\Microsoft.WindowsAzure.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. 

MSBuild正在寻找VS10位置(C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Windows Azure Tools \ 2.3 \ Microsoft.WindowsAzure.targets)中的Azure SDK 2.3目标。 Sayed Ibrahim Hashimi在一篇博客文章中解释了这个原因,据我了解,这可以归结为他们在为解决scheme文件提供跨版本兼容性时作出的一些决定。 解决scheme很简单:将VisualStudioVersion属性添加到MSBuild调用,如下所示:

 msbuild.exe MyAwesomeWeb.sln /p:VisualStudioVersion=11.0 

实际上,这覆盖了每个csproj文件中的以下内容:

 <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> 

据推测,你可以得到相同的结果,通过编辑所有这些手工取代10.0 11.0,但这可能会打破向后兼容性 – 我还没有尝试过。 我也没有尝试更新VS2013,看看问题是否存在。

因此,通过回答这个问题来解决这个问题:是的,在“转换”(使用其他回答者提供的任何方法)之前,存在一些差异,并且之后存在一些差异。

这是略有不同,但沿着相同的路线,以防万一它帮助任何人:

我正在加载一个项目,看起来像是加载,然后保持显示所有项目不可用。 迁移报告没有错误。 我尝试重新加载解决scheme,并多次使用各种方法,包括build议。

最后,当在解决scheme资源pipe理器中右键单击解决scheme时,find了“解决错误”选项。 VS又经历了一个加载过程,并且工作。 没问题。

我不知道这个时间做了什么不同,但显然是有所作为的。

只需简单地编辑.sol文件,将版本更改为11

喜欢这个

Microsoft Visual Studio解决scheme文件,格式版本12.00

Visual Studio 2012