2009-05-08 19 views
0

J'ai une version qui s'exécute dans TFS TeamBuild. Je veux passer une propriété à MSBuild qui est exécutée pour chaque projet construit par TFSBuild.proj.Transmettez une valeur de TeamBuild à MSBuild

Exemple:

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> 

Lorsque le MyWixProjectFile.wixproj se construit le message indiquant que le $ (Version) est vide est imprimé à chaque fois.

Est-ce que je peux obtenir le fichier projet pour voir les propriétés TFSBuild.proj?

Vaccano

+0

Vous avez vérifié que la version dans TFSBuild.proj n'est pas vide à blanc? –

+0

Oui, j'ai. Il est utilisé dans beaucoup d'autres endroits et il corrige tout le temps. – Vaccano

Répondre

0

Cela se fait via les propriétés de métadonnées dans la balise SolutionToBuild. Par exemple:

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

Je ne suis pas un expert en Wix, mais je ne trouve cela et pensé que vous pourriez essayer.

Setting properties for WiX in MSBuild

+0

Malheureusement, cela ne m'aide pas. J'ai déjà un processus pour aller de MSBuild à WIX. Cela va de TeamBuild à MSBuild (au niveau du projet) qui m'a bloqué! Merci pour le poste si Vaccano – Vaccano

0

Option 1

Utilisez MSBuild pour appeler directement MyWIXProjectFile.wixproj et passer la version en tant que propriété

Option 2

Résumé sur la construction de Wix vers son propre selft contient le script, puis utilise MSBuild pour appeler directement et transmettre toutes les propriétés nécessaires. J'ai un blog avec une implémentation complète en faisant cela au http://blog.newagesolution.net/2008/06/how-to-use-msbuild-and-wix-to-msi.html qui pourrait vous intéresser.