解决MSBuild中解析VisualStudioVersion时出现的Visual Studio 2013解决方案格式版本错误问题

7
在Visual Studio 2013中创建新解决方案时,文件顶部如下所示:
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.30110.0

这个格式版本不正确吗?VS2012(v11)的格式版本是12.00,那么为什么Visual Studio 2013(v12)没有13.00的格式版本呢?
这导致我们的构建服务器出现问题,因为根据这篇文章(见#2):

http://sedodream.com/2012/08/19/VisualStudioProjectCompatabilityAndVisualStudioVersion.aspx

MSBuild的VisualStudioVersion变量是使用-1格式版本设置的。我们的构建服务器只有VS2013和相关工具(因此安装在C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v12.0中),但构建失败,因为VisualStudioVersion自动设置为11,并且它在错误的路径中查找(C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v11.0)。我错过了什么还是应该随着Visual Studio 2013增加格式版本?
1个回答

12

Visual Studio 2013 的格式版本为 12.0。 如果您有一个不是 TFS2013 的构建服务器,请在您的构建定义中添加以下 MSBuild 参数:

/p:VisualStudioVersion=12.0

有关MSBuild的/property:开关,又称/p:开关的更多信息,请参见此处

如果您更喜欢连字符而不是斜杠,也可以这样做;行为相同:

-p:VisualStudioVersion=12.0`

我认为这就是我在问题中所说的!但12.0也是VS 2012的格式版本!谢谢,我已经通过这个参数解决了我的问题。 - oatsoda
没错,12.0也是与VS2012和VS2013相同的格式版本。但参数看起来是针对Visual Studio版本的。对于VS2012,它是11.0,而对于VS2013,它是12.0。我很高兴能帮到你。别忘了标记答案。 - LockTar
我已经在使用参数作为解决方法。我的问题更多是想找出这个格式版本是一个疏忽还是有办法让它工作 - 我不喜欢构建不再由我的解决方案中的版本驱动的事实。 - oatsoda
1
我认为它从来没有这样做过。请查看工作流模板中是否有一个硬编码版本号的属性。该参数只是覆盖了此版本。 - LockTar
1
那不是这样的。我认为您需要阅读我问题中的链接:“当您构建.sln文件时,VisualStudioVersion的值将是.sln文件中找到的Format Version的-1。” - oatsoda
@Ralph-Jansen 正在谈论构建工作流模板(通常为 TFS 2012 的 DefaultTemplate.11.1.xaml)。在该工作流中,有一个调用 MSBuild 的语句,它提供版本号。语句“当您正在构建 .sln 文件时…”是指从桌面上的 Visual Studio 进行构建。TFS 2013 提供了一个名为 TfvcTemplate.12.xaml 的新构建模板。如果您不升级到新模板,则需要使用您一直在使用的解决方法,或修改旧模板。 - JamesQMurphy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接