2014-11-13 55 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文章來修復這個文件。