2008-11-19 21 views
0

est-il un moyen de personnaliser les macros d'événements post construction, je voudrais passer le nouvel ensemble à un sous-dossier dans le même répertoire nommé par la version de l'assemblage à savoirPoster Créer des événements Personnalisation Dans Visual Studio

copy $ (TargetDir) $ (TargetFileName) $ (TargetDir) $ (ASSEMBLYVERSION) \ $ (TargetFileName)

Cependant, il n'y a pas une telle 'macro'. Trier de construire un exécutable pour obtenir la version comme si

call foo.bat $(TargetName) 

Là où nous avons foo.bat évaluer la version de la cible en appelant une application gérée qui imprime la version de l'assemblage que vous passez, dites GetVersion.exe

for /f %%t in ('GetVersion.exe %1') do (
     set _version=%%t 
    ) 
echo %_version% 

Des idées? Sûrement il y a un moyen de personnaliser les macros directement?

Répondre

1

Vous ne savez pas si cela peut être fait via le script post-build, mais vous pouvez modifier le fichier projet pour faire la même chose.

Faites un clic droit sur le projet et sélectionnez "Décharger le projet".

Ensuite, faites un clic droit de nouveau et sélectionnez "Modifier le projet".

Maintenant dans le fichier projet, trouvez la cible "AfterBuild". C'est normalement au bas du fichier et commenté.

décommentez, ou tout simplement coller les éléments suivants:

<Target Name="AfterBuild"> 
    <GetAssemblyIdentity AssemblyFiles="path\to\bin\$(Configuration)\$(OutputName).dll"> 
    <Output TaskParameter="Assemblies" ItemName="AssemblyVersion"/> 
    </GetAssemblyIdentity> 

    <Copy 
    SourceFiles="path\to\bin\$(Configuration)\$(OutputName).dll" 
    DestinationFiles="path\to\bin\$(Configuration)\%(AssemblyVersion.Version)\$(OutputName).dll" /> 
</Target> 

Enfin faites un clic droit sur le projet et sélectionnez « Recharger le projet ».

Vous devrez peut-être manipuler les noms des variables et éventuellement créer le dossier avant de les copier. Espérons que cela aidera cependant.

Idée tirée de Automated installer version numbers for WiX

+0

Merci, il a été utile pour moi! –