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

Foi útil?

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.

Definindo propriedades para WiX em MSBuild

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top