2014-11-13 34 views
0

我已经创建了一个包含下面的头一个MSBuild凸出文件:VisualStudioVersion =“VersionLatest”没有被拾起

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0" TargetFrameworkVersion="4.5" VisualStudioVersion="VersionLatest"> 

这个凸出文件用于多项SSDT项目引发的MSBuild,配合部署。

对于大多数开发人员来说,这很好。但是,一个开发人员在尝试运行构建时遇到Deploy72002异常。根据this的回答,这是由于未设置VisualStudioVersion。果然,在MSBuild调用之前的批处理文件中添加

set VisualStudioVersion="12.0" 

可修复问题。

但是,我在印象之下(我现在找不到源代码)在proj文件的xml中设置VisualStudioVersion="VersionLatest"足以使它使用安装的最高版本的VS。我甚至尝试将它从VersionLatest设置为12.0,并且将它从根节点移动到<PropertyGroup>中的它自己的节点中。

我宁愿在批处理文件中没有对12.0的硬编码引用。我是否错过了明显的东西来使VersionLatest工作?

+0

“VersionLatest”现在在Microsoft.Build.Utilities.v12.0.dll中简单地硬编码为12.0。 VS的下一个版本可能会有另一个MSBuild版本,可能会将其硬编码为不幸的数字。或者它会保持12.0,因为你要求ToolsVersion 12.0 :)直到你拥有该版本并知道它做了什么之前,不要做任何激烈的事情。 –

+0

即使它在系统中硬编码为12,为什么不从这个开发人员的.proj文件中选取? –

回答

0

试试这个:使用命令行选项运行MsBuild来生成预处理的单个文件。在具有相同版本的工作计算机上执行相同操作。区分生成的文件。

它可能会为某些.props或.targets文件提取不同的内容。这些已知因安装或更新某些内容而发生变化。我记得当我查找一个问题时,遵循一个msdn文章来修复这个文件。