我用vs2012打开了vs2010解决方案,但由于发生了2008年到2010年的情况,因此未进行任何转换。因此,我的解决方案仍然与上面的10个标签相同。当我提出一个新的解决方案时,上面当然有11个标签。这样运行我没有任何问题,但我很好奇。有什么区别吗?如果是,如何转换成vs2012解决方案?
Answers:
我设法“转换”解决方案文件,以将.SLN文件中包含“#Visual Studio 2010”的行更改为“#Visual Studio 2012”。
不需要或建议手动编辑解决方案文件。只需在VS2012中打开VS2010解决方案,左键单击该解决方案(在“解决方案资源管理器”的顶部),然后使用“文件| 另存为将覆盖原始文件。这将有效地将VS2010解决方案文件转换为VS2012解决方案文件。
对于C ++项目,这有所不同,因为2012编译器(VC11)仅用于显式2012年的项目,而不用于VS 2012中打开的2010年项目。VC11编译器提供了一些C ++ 11改进,但不适用于VS11。 VC10(有关摘要,请参见此SO答案),包括:
为了从VS 2010项目转换为VS2012 ,无需在现有项目上手动编辑解决方案文件或“另存为”。代替:
如果您在第一次提示时拒绝更新,则可以稍后通过打开“项目”菜单并选择“更新VC ++项目... ”来更新项目。 [在菜单选项顶部]
来自MSDN的“如何:将Visual C ++项目升级到Visual Studio 2012 ”
(此页面通过@Joachim的MSDN链接链接,但是我想在SO上找到答案,因为许多其他答案建议使用手动解决方法,而不是VS 2012特征)
我在搜寻特定问题的解决方案时遇到了这个问题:MSBuild无法针对从命令行(特别是通过TeamCity)调用的VS2012解决方案执行Publish目标,而该解决方案已在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在博客文章中解释,据我了解,归结为他们做出的一些决定,同时为解决方案文件启用了跨版本兼容性。解决方案很简单:将VisualStudioVersion属性添加到MSBuild调用中,如下所示:
msbuild.exe MyAwesomeWeb.sln /p:VisualStudioVersion=11.0
实际上,这将覆盖每个csproj文件中的以下内容:
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
大概您可以通过手动编辑所有这些以将10.0替换为11.0来获得相同的结果,但是这可能会破坏向后兼容性-我还没有尝试过。我也没有尝试过更新VS2013来查看问题是否仍然存在。
因此,通过回答以下问题来总结一下:是的,在进行“转换”之前(使用其他答复者提供的任何方法)存在一些差异,此后仍然存在一些差异。
这稍有不同,但是遵循相同的原则,以防万一它可以帮助任何人:
我正在加载一个看起来像正在加载的项目,然后一直将所有项目显示为不可用。迁移报告中没有错误。我尝试使用各种方法(包括此处的建议)多次重新加载解决方案和项目。
最后,在解决方案资源管理器中右键单击解决方案时,我找到了“解决错误”选项。VS再次经历了加载过程,并开始工作。没问题。
我不知道那段时间它做了什么不同,但是显然它有所作为。
这很简单,只需编辑.sol文件即可将版本更改为11
像这样
Microsoft Visual Studio解决方案文件,格式版本为12.00
Visual Studio 2012