BeforeBuild操作中WIX中的环境变量

时间:2017-01-27 23:29:19

标签: wix

在我的.wixproj文件中,我有一个before构建操作来获取程序集版本并将其附加到输出文件名。但是,我在本地计算机上构建代码的方式与TFS服务器上的代码不同。所以我正在尝试以下方法:

  <Target Name="BeforeBuild">
    <GetAssemblyIdentity AssemblyFiles="$(TargetDir)\myassembly.dll" Condition="$(env.COMPUTERNAME)=='THETFSSERVER'">
      <Output TaskParameter="Assemblies" ItemName="AssemblyVersions" />
    </GetAssemblyIdentity>
    <GetAssemblyIdentity AssemblyFiles="$(SolutionDir)\Source\Project\bin\myassemblydll" Condition="$(env.COMPUTERNAME)!='THETFSSERVER'">
      <Output TaskParameter="Assemblies" ItemName="AssemblyVersions" />
    </GetAssemblyIdentity>
    <CreateProperty Value="$(OutputName)_%(AssemblyVersions.Version)">
      <Output TaskParameter="Value" PropertyName="TargetName"/>
    </CreateProperty>
  </Target>

我已尝试过&amp;(env.COMPUTERNAME),[&amp; COMPUTERNAME]以及我在网上看到的其他几个选项以及其他一些有意义的选项,但我无法找到准确地用来查看计算机名称....任何想法如何实现?

1 个答案:

答案 0 :(得分:1)

有。它是$(COMPUTERNAME)。在MSBuild中首次加载构建脚本时,有一种非常简单的方法可以找出所有属性。您所要做的就是使用诊断详细程度生成日志。然后查看日志文件的顶部,它将列出所有初始属性和项目。

例如:

msbuild.exe /l:FileLogger,Microsoft.Build.Engine;verbosity=diagnostic;logfile=diag.log MyProject.proj

Link from where the answer was taken

Alsol,tfs是在msbuild下构建的,你可能构建了visual visual studio。因此,条件可以使用$(BuildingInsideVisualStudio)属性而不是计算机名称。