Comment puis-je limiter mes événements post-build à ne s'exécuter que pour un seul type de build?
J'utilise les événements pour copier les fichiers 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.
Pour info, vous n'avez pas besoin d'utiliser goto. La commande shell IF peut être utilisée avec des crochets ronds:
la source
"$(ConfigurationName)"
(notez les guillemets) si vous obtenez le code d'erreur 255$(ConfigurationName)
est vide (ligne de commande d'événement post-build).if "$(Configuration)" == "Debug"
travaillé pour moi. BTW, si vous voulez faire quelque chose dans toutes les autres configurations, utilisezif NOT "$(Configuration)" == "Debug"
.Ajoutez votre événement post-build comme d'habitude. Enregistrez ensuite votre projet, ouvrez-le dans le Bloc-notes (ou votre éditeur préféré) et ajoutez une condition au groupe de propriétés PostBuildEvent. Voici un exemple:
la source
cd "$(ProjectDir)"
étendu àcd ""
.<Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="$(ConfigurationName) == Debug"> <Exec Command="your command"/></Target>
. Les variables de macro et tout fonctionnent normalement.Sinon (étant donné que les événements sont placés dans un fichier de commandes, puis appelés), utilisez ce qui suit (dans la zone d'événements de génération, pas dans un fichier de commandes):
De cette façon, vous pouvez avoir des événements pour n'importe quelle configuration, et toujours le gérer avec les macros plutôt que d'avoir à les passer dans un fichier batch, rappelez-vous que
%1
c'est$(OutputPath)
, etc.la source
Error 1 The command "C:\MyProject\postbuild.bat" exited with code 99. MyProject
if
et utilisergoto :$(ConfigurationName)
Visual Studio 2015: La syntaxe correcte est (gardez-la sur une seule ligne):
Pas d'erreur 255 ici.
la source
Depuis Visual Studio 2019, le
.csproj
format moderne prend en charge l'ajout d'une condition directement sur l'Target
élément:L'interface utilisateur ne fournit pas un moyen de configurer cela, mais elle semble laisser l'
Configuration
attribut en place en toute sécurité si vous apportez des modifications via l'interface utilisateur.la source
Vous pouvez transmettre le nom de la configuration au script post-génération et l'archiver pour voir s'il doit s'exécuter.
Passez le nom de la configuration avec
$(ConfigurationName)
.La vérification est basée sur la façon dont vous implémentez l'étape post-construction - ce sera un argument de ligne de commande.
la source
Cela fonctionne pour moi dans Visual Studio 2015.
Je copie tous les fichiers DLL d'un dossier situé dans un dossier de bibliothèque au même niveau que mon dossier de solution dans le répertoire cible du projet en cours de construction.
Utiliser un chemin relatif depuis mon répertoire de projet et remonter la structure des dossiers en deux étapes avec .. \ .. \ lib
MySolutionFolder
.... MyProject
Lib
la source
Comme tout paramètre de projet, les événements de génération peuvent être configurés par configuration. Sélectionnez simplement la configuration que vous souhaitez modifier dans la liste déroulante de la boîte de dialogue Pages de propriétés et modifiez l'étape de post-génération.
la source
Dans Visual Studio 2012, vous devez utiliser (je pense que dans Visual Studio 2010 aussi)
$(ConfigurationName)
a été répertorié en tant que macro, mais il n'a pas été attribué.Comparer: macros pour les commandes et les propriétés de génération
la source