Question Comment faire pour exécuter des événements post-build Visual Studio pour la version de débogage uniquement


Comment puis-je limiter mes événements post-build à l'exécution uniquement pour un type de build? J'utilise les événements pour copier des DLL dans un répertoire virtuel IIS local, mais je ne veux pas que cela se produise sur le serveur de génération en mode de publication.


522
2017-09-29 18:41


origine


Réponses:


Les événements pré et post-construction s'exécutent en tant que script de traitement par lots. Vous pouvez faire une déclaration conditionnelle sur $(ConfigurationName).

Par exemple

if $(ConfigurationName) == Debug xcopy something somewhere

649
2017-09-29 18:48



Pour info, vous n'avez pas besoin d'utiliser goto. la commande shell IF peut être utilisée avec des parenthèses:

if $(ConfigurationName) == Debug (
  copy "$(TargetDir)myapp.dll" "c:\delivery\bin" /y
  copy "$(TargetDir)myapp.dll.config" "c:\delivery\bin" /y
) ELSE (
  echo "why, Microsoft, why".
)

455
2017-08-23 13:06



Ajoutez votre événement de construction de poste comme d'habitude. Enregistrez ensuite votre projet, ouvrez-le dans le Bloc-notes (ou votre éditeur favori) et ajoutez une condition au groupe de propriétés PostBuildEvent. Voici un exemple:

<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <PostBuildEvent>start gpedit</PostBuildEvent>
</PropertyGroup>

111
2017-09-29 18:47



alternativement (puisque les événements sont placés dans un fichier batch, puis appelé), utilisez ce qui suit. (dans la zone Evénement de génération, pas dans un fichier de commandes):

if $(ConfigurationName) == Debug goto :debug

:release
signtool.exe ....
xcopy ...

goto :exit

:debug
' debug items in here

:exit

De cette façon, vous pouvez avoir des événements pour n'importe quelle configuration, et encore la gérer avec les macros plutôt que de devoir les passer dans un fichier batch et rappelez-vous que% 1 est $ (OutputPath) etc:


100
2017-07-24 09:56



Visual studio 2015: La syntaxe correcte est (gardez-la sur une ligne):

if "$(ConfigurationName)"=="My Debug CFG" 
  ( xcopy "$(TargetDir)test1.tmp" "$(TargetDir)test.xml" /y) 
else 
  ( xcopy "$(TargetDir)test2.tmp" "$(TargetDir)test.xml" /y)

Pas d'erreur 255 ici.


12
2018-02-22 13:21



Vous pouvez transmettre le nom de la configuration au script de post-construction et vérifier qu'il fonctionne correctement.

Passez le nom de la configuration avec $ (ConfigurationName)

Le vérifier est basé sur la façon dont vous implémentez l'étape de post-construction - ce sera un argument de ligne de commande


4
2017-09-29 18:44



Cela fonctionne pour moi dans Visual Studio 2015.
Je copie tous les fichiers dll à partir d'un dossier situé dans un dossier lib au même niveau que mon dossier de solution dans le répertoire cible du projet en cours de construction.
En utilisant un chemin relatif à partir de mon répertoire de projet et en remontant la structure du dossier en deux étapes avec .. \ .. \ lib

MySolutionFolder
....Mon projet
Lib

if $(ConfigurationName) == Debug (
xcopy /Y "$(ProjectDir)..\..\lib\*.dll" "$(TargetDir)"
) ELSE  (echo "Not Debug mode, no file copy from lib")

-1
2018-06-29 14:59



Comme tout projet, les buildevents peuvent être configurés par configuration, il suffit de sélectionner la configuration que vous souhaitez modifier dans la liste déroulante de la boîte de dialogue Pages de propriétés et de modifier l'étape de post-construction.


-2
2017-09-29 18:48



Dans VS 2012 vous devez utiliser (je pense aussi à VS 2010)

if $(Configuration) == Debug xcopy

$ (ConfigurationName) a été répertorié en tant que macro, mais n'a pas été affecté.

enter image description here

Comparer: http://msdn.microsoft.com/en-us/library/c02as0cs(v=vs.110).aspx


-2
2017-12-14 07:46