在我的.wixproj文件中,我有一个前置构建操作来获取程序集版本并将其附加到输出文件名中。但是,我的代码在本地机器上构建的方式与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>我尝试过&(env.COMPUTERNAME)、&COMPUTERNAME,以及我在网上看到的其他一些选项,以及其他一些有意义的选项,但我无法找到用于查看计算机名称的确切内容.有什么办法可以做到吗?
发布于 2017-01-30 18:48:30
的确有。是$(COMPUTERNAME)。当您第一次在MSBuild中加载构建脚本时,有一种非常简单的方法可以了解所有的属性是什么。您所要做的就是使用诊断细节生成一个日志。然后查看日志文件的顶部,它将列出所有初始属性和项。
例如:
Microsoft.Build.Engine;verbosity=diagnostic;logfile=diag.log MyProject.proj,msbuild.exe /l:FileLogger
Alsol,tfs是在msbuild下构建的,您可能是从visual studio构建的。因此,条件可以使用$(BuildingInsideVisualStudio)属性而不是计算机名。
https://stackoverflow.com/questions/41904677
复制相似问题