Sur une construction réussie, je souhaite copier le contenu du répertoire de sortie vers un emplacement différent sous le même dossier "de base" . Ce dossier parent est une partie relative et peut varier en fonction des paramètres de contrôle de source.
J'ai énuméré quelques-unes des valeurs de macro disponibles pour moi ...
$ (SolutionDir) = D: \ GlobalDir \ Version \ AppName \ Solution1 \ build
$ (ProjectDir) = D: \ GlobalDir \ Version \ AppName \ Solution1 \ Version \ ProjectA \
Je souhaite copier le contenu du répertoire de sortie dans le dossier suivant:
D: \ GlobalDir \ Version \ AppName \ Solution2 \ Project \ Dependency
L'emplacement de base "D: \ GlobalDir \ Version \ AppName" doit être récupéré à partir de l'une des macros ci-dessus. Cependant, aucune des valeurs de macro ne répertorie uniquement l'emplacement parent.
Comment extraire uniquement l'emplacement de base de la commande de copie après génération?
Voici ce que vous voulez mettre dans la ligne de commande d'événement post-build du projet:
EDIT: Ou si votre nom cible est différent du nom du projet.
la source
/Y
. Merci d'avoir montré toute la commande.xcopy
des caractères génériques et les commutateurs appropriés pour obtenir un résultat similaire, tout en conservant la structure (arborescence) du dossier source, telle que:xcopy /i /e /s /y /f "<source>\MyFolder\*" "<destination>\MyFolder"
copy /Y "$(TargetPath)" "$(SolutionDir)somewhere\"
:, sans la barre oblique inverse supplémentaire, puisque $ (SolutionDir) inclut une barre oblique inverse de fin (au moins dans VS2012)Tu pourrais essayer:
la source
Je pense que cela est lié, mais j'ai eu un problème lors de la construction directement à l'aide de la
msbuild
ligne de commande (à partir d'un fichier de commandes) par rapport à la construction à partir de VS.En utilisant quelque chose comme ce qui suit:
(Remarque:
start XCOPY
plutôtXCOPY
qu'utilisé pour contourner un problème d'autorisations qui empêchait la copie)La macro a été
$(SolutionDir)
évaluée..\
lors de l'exécution de msbuild à partir d'un fichier de commandes, ce qui a entraîné l'XCOPY
échec de la commande. Sinon, cela fonctionnait bien lorsqu'il était construit à partir de Visual Studio. Confirmé en utilisant/verbosity:diagnostic
pour voir la sortie évaluée.L'utilisation de la macro à la
$(ProjectDir)..\
place, ce qui revient au même, a bien fonctionné et a conservé le chemin d'accès complet dans les deux scénarios de génération.la source
Start
travaillé pour moi (pourxcopy
un dossier partagé).Ne serait-il pas logique d'utiliser directement msbuild? Si vous faites cela avec chaque build, vous pouvez ajouter une tâche msbuild à la fin? Si vous souhaitez simplement voir si vous ne pouvez pas trouver une autre valeur de macro qui ne s'affiche pas sur l'IDE Visual Studio, vous pouvez activer les options msbuild pour le diagnostic et cela vous montrera toutes les variables que vous pourriez utiliser, comme ainsi que leur valeur actuelle.
Pour l'activer dans Visual Studio, accédez à Outils / Options, puis faites défiler l'arborescence jusqu'à la section intitulée Projets et solutions, développez-la et cliquez sur Générer et exécuter, à droite, une liste déroulante spécifiant la verbosité de la sortie de la génération , définissant cela sur diagnostic, vous montrera quelles autres valeurs de macro vous pouvez utiliser.
Parce que je ne sais pas exactement à quel niveau vous aimeriez aller et à quel point vous voulez que votre construction soit complexe, cela pourrait vous donner une idée. J'ai récemment fait des scripts de build, qui exécutent même du code SQL dans le cadre de la build. Si vous souhaitez plus d'aide ou même quelques exemples de scripts de build, faites-le moi savoir, mais si c'est juste un petit processus que vous voulez exécuter à la fin de la build, le lancement complet du script msbuild est peut-être un peu trop fatal .
J'espère que ça aide Rihan
la source