Pregunta

Tengo una compilación que se ejecuta en TFS TeamBuild. Quiero pasar una propiedad de eso a MSBuild que se ejecuta para cada proyecto creado por TFSBuild.proj.

Ejemplo:

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>

Cuando se crea MyWixProjectFile.wixproj, el mensaje que muestra que $ (Versión) está en blanco se imprime cada vez.

¿Hay alguna forma de obtener el archivo del proyecto para ver las propiedades de TFSBuild.proj?

Vaccano

¿Fue útil?

Solución 2

Esto se realiza a través de los metadatos de propiedades en la etiqueta SolutionToBuild. Por ejemplo:

  <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>

Otros consejos

No soy un experto en Wix, pero encontré esto y pensé que podrías intentarlo.

Configuración de propiedades para WiX en MSBuild

Opción 1

Use MSBuild para llamar directamente a MyWIXProjectFile.wixproj y pasar Version como propiedad

Opción 2

Resuma la compilación de wix en su propio script contenido y luego use MSBuild para llamar directamente y pasar todas las propiedades necesarias. Tengo un blog con implementación completa haciendo esto en http://blog.newagesolution.net/2008/06/how-to-use-msbuild-and-wix-to-msi.html que pueda ser de su interés.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top