2010-12-01 5 views
14

J'ai un projet MVC et je veux diviser sa sortie.VS 2010. Post-construction. Copier des fichiers dans plusieurs répertoires/plusieurs chemins de sortie

Je veux copier tous les fichiers DLL de ce projet (tout le contenu du répertoire Bin) vers un répertoire, et toutes les vues (contenu du répertoire View) vers un autre répertoire de sortie.

Les réglages du projet dans VS 2010 ne me permettent pas de faire cela simplement.

Je ne peux spécifier qu'un seul chemin de sortie dans les paramètres et je ne peux pas spécifier quels répertoires ou types de fichiers copier et où.

Je pense que je devrais laisser le répertoire de sortie à sa valeur par défaut, puis j'ai besoin de diviser la sortie comme je le souhaite en utilisant la commande Post-build.

Peut-être que quelqu'un a fait quelque chose de similaire et a des idées pour le faire le mieux?

+0

Une fois les fichiers créés dans le dossier de sortie, les différents types de fichiers peuvent-ils être facilement distingués par leur fin? –

Répondre

20

La solution est

1) Définir le chemin de sortie dans le répertoire où vous souhaitez copier vos fichiers * dll dans les propriétés du projet

2) En utilisant l'événement après génération pour copier le contenu de la vue répertoire quel que soit le répertoire que vous voulez

dans mon cas

1) chemin de sortie i mis à

.. \ MyDestinationProjectName \ Bin \

2) l'événement après génération copier Voir le répertoire ressemble à ceci

xcopy "$ (ProjectDir) \ Views" « $ (SolutionDir) \ MyDestinationProjectName \ Plugins \ Views \ $ (ProjectName) \ "/ s/i/y

+1

'/ I' paramètre résolu mon problème d'erreur qui se produit lorsqu'un fichier existe déjà dans la destination –

+1

D'un projet par défaut, je voulais copier l'exécutable compilé dans un dossier de destination.Mon événement de post-construction cmd était 'xcopy" $ (SolutionDir) $ (Configuration) \ $ (TargetName) $ (TargetExt) "" C: \ MyOutputFolder "/ s/i/y', juste au cas où cela aiderait quelqu'un . Très utile! – caiosm1005

+0

/I - traiter comme un répertoire si vous copiez plusieurs fichiers /Q - N'affiche pas les fichiers en cours de copie. /S - Copie des sous-répertoires à moins d'être vide. /E - Copie des sous-répertoires vides. /Y - Ne pas demander l'écrasement des fichiers existants. /R - Remplacer les fichiers en lecture seule. –

3

Cela devrait être un commentaire à @ caiosm1005, mais je manque de points. Comme indiqué par @Riapp, utilisez la commande xcopy. Une explication détaillée des commutateurs peuvent être trouvés ici Xcopy and Xcopy32 Switches

Ma solution a été: xcopy "$(TargetDir)$(TargetFileName)" "C:\Mydestination" /s /i /y

Le TargetDir contenait le chemin complet du fichier compilé et le TargetFileName est la combinaison de TargetName et TargetExt. N'ajoutez pas de séparateur antislash après une variable de répertoire, par ex. $(TargetDir)\$(TargetFileName) échouera car il sera interprété comme "TargetName**\\** TargetExt". Une fois que vous regardez les valeurs dans les macros, il devrait être facile de choisir ce que vous voulez. N'oubliez pas que vous devez le faire sur chaque projet de votre solution. Les événements de construction peuvent être trouvés en cliquant avec le bouton droit de la souris sur le projet, en sélectionnant les propriétés, puis en sélectionnant l'onglet Build Events.

+0

Merci. J'ai trouvé de meilleurs moyens de le faire quelque temps après avoir fait ce commentaire. C'est le chemin à parcourir! – caiosm1005

Questions connexes