Passar um valor de TeamBuild para MSBuild
-
20-08-2019 - |
Pergunta
Eu tenho uma compilação que está sendo executado em TFS TeamBuild. Quero passar uma propriedade de que o MSBuild que é executado para cada projeto construído pelo TFSBuild.proj.
Exemplo:
TFSBuild.proj
<PropertyGroup>
<Version>0.0.0.0</Version>
</PropertyGroup>
<Target Name="BuildNumberOverrideTarget"
DependsOnTargets="AfterInitializeWorkspace">
<!--Code that loads the version from a file (removed).-->
<PropertyGroup>
<!--Save off the version.-->
<Version>$(TxCompleteVersion)</Version>
</PropertyGroup>
MyWIXProjectFile.wixproj
<Target Name="BeforeBuild">
<PropertyGroup>
<!--If Version is defined then use that.
Else just use all zeros to show that this is a developer built version-->
<CurrentVersion Condition="'$(Version)' == ''" >0.0.0.0</CurrentVersion>
<CurrentVersion Condition="'$(Version)' != ''" >$(Version)</CurrentVersion>
</PropertyGroup>
<Message Condition="'$(Version)' == ''"
Text="Version info is empty (i.e. a developer build). Version set to $(CurrentVersion)"/>
</Target>
Quando o MyWixProjectFile.wixproj é construído a mensagem mostrando que o $ (Version) está em branco será impresso a cada vez.
Existe alguma maneira que eu possa obter o arquivo de projeto para ver as propriedades TFSBuild.PROJ?
Vaccano
Solução 2
Isto é feito através de metadados propriedades na tag SolutionToBuild. Por exemplo:
<ItemGroup>
<SolutionToBuild Include="$(BuildProjectFolderPath)\ChangeThisOne.sln">
<Targets></Targets>
<Properties>Change=True</Properties>
</SolutionToBuild>
<SolutionToBuild Include="$(BuildProjectFolderPath)\ChangeThisToo.sln">
<Targets></Targets>
<Properties>Change=True</Properties>
</SolutionToBuild>
<SolutionToBuild Include="$(BuildProjectFolderPath)\DontChangeThis.sln">
<Targets></Targets>
<Properties>Don'tChange=False</Properties>
</SolutionToBuild>
</ItemGroup>
Outras dicas
Eu não sou um especialista em Wix mas eu encontrei este e achei que você poderia dar-lhe uma tentativa.
Opção 1
Use MSBuild para chamar diretamente MyWIXProjectFile.wixproj e passar Versão como propriedade
Opção 2
Abstract a largura do Wix para o seu próprio selft contido script e, em seguida, usar MSBuild para chamar diretamente e passando todas as propriedades necessárias. Eu tenho blog com a plena implementação fazendo isso em http://blog.newagesolution.net/2008/06/how-to-use-msbuild-and-wix-to-msi.html que possam ser de seu interesse.