2014-04-23 95 views
0

我正在建立與下一個目標:微軟TFS生成可變丟失

<Target Name="BeforeCompile"> 
    <Message Text="Build no: $(BuildNumber)" /> 
    </Target> 

然後在兩者之間我運行構建(使用NMAKE)。從那以後,我要部署固件:

<Target Name="AfterCompile"> 
    <MSBuild Projects="$(MSBuildProjectFile)" Targets="CustomDeployMagicFirmware" Properties="Id=1" /> 
    </Target> 

    <Target Name="CustomDeployMagicFirmware"> 
    <Message Text="...Deploying bootloader files to build machine - folder: $(BuildNumber)" /> 
    <Exec Command='xcopy "$(SolutionRoot)\Repository\bootloader\*.axf" \\machine\bootloader\$(BuildNumber) /y /q'/> 
    <Exec Command='xcopy "$(SolutionRoot)\Repository\bootloader\*.hex" \\machine\bootloader\$(BuildNumber) /y /q'/ --> 
    </Target> 

的問題是,在目標「BeforeCompile」我得到正確消息輸出爲$(BuildNumber)。但後來我有消息測試輸出,如:
...部署引導加載程序文件來建立機器 - 文件夾:
看起來像變量$(BuildNumber)沒有設置了。還要命令xcopy將文件複製到文件夾引導加載程序,而不是文件夾引導加載程序\ $(BuildNumber)。

我該怎麼做?哪些事情會影響變量內容?

回答

0

的錯誤是在這一行

<MSBuild Projects="$(MSBuildProjectFile)" Targets="CustomDeployMagicFirmware" Properties="Id=1" /> 

的MSBuild任務產生一個新MSBuild.exe進程,你沒有通過屬性$(BuildNumber)的新工藝。改變它像下面這將工作

<MSBuild Projects="$(MSBuildProjectFile)" Targets="CustomDeployMagicFirmware" Properties="Id=1;BuildNumber=$(BuildNumber)" /> 
+0

很好,這個作品!謝謝 – user3564258

0

使用<CallTarget>而不是<MSBuild>調用你的CustomDeployMagicFirmware目標。

+0

我需要調用MSBuild,因爲我多次運行目標CustomDeployMagicFirmware。如果使用CallTarget TFS將只調用一次。 – user3564258