Les autres réponses à cette question ont tendance à supposer que vous n'utilisez pas VisualStudio mais MSBuild directement ou un projet existant pour lequel vous pouvez ajouter un type étape de génération personnalisée ou un événement de construction (j'ai trouvé l'événement de construction de les erreurs de solutions sont sujettes parce qu'elles ne copient pas toujours les fichiers quand vous en avez besoin copiés).
Si vous voulez un projet VisualStudio qui ne fait qu'une copie, vous pouvez le faire avec VisualStudio en stock avec un projet Makefile.
Le projet légèrement mal nommé Makefile peut faire tout ce que vous pouvez faire depuis la ligne de commande. Évidemment, cela signifie que vous pouvez créer un projet Makefile qui ne fait que copier des fichiers. Dans un du projet Makefile Propriétés ⇒ Configuration Propriétés de la section ⇒ NMake sont des champs pour construire, reconstruire, et les actions propres. Ceux-ci peuvent être remplis avec les anciennes commandes de fichiers batch. VisualStudio créera un fichier batch temporaire à partir de chaque champ et l'exécutera avec cmd. Avertissement Vous obtiendrez l'interpréteur cmd 32 bits sur les machines 64 bits. Vous devrez donc utiliser le répertoire magique sysnatif si vous voulez accéder aux commandes Windows 64 bits ou aux DLL (je ne suis pas sûr que est documenté n'importe où donc ce n'est peut-être pas toujours le cas - vos scripts batch doivent être robustes par rapport au bit-ness de cmd change
Exemple de code batch nécessitant des fichiers système 64 bits sans savoir au préalable quel cmd ou OS (32- bit ou 64-bit) exécutera le code:
if /i "%programfiles%"=="%programfiles(x86)%" if /i not "%programfiles%"=="%programw6432%" (
REM 32 bit cmd on 64-bit computer
REM Use the 'sysnative' fake directory to get to 64-bit system32 files
) else (
if /i not "%programfiles%"=="%programfiles(x86)%" if /i "%programfiles%"=="%programw6432%" (
REM 64 bit cmd on 64-bit computer
REM Use the 'system32' directory to get to 64-bit system32 files
) else (
echo "Cannot do 64-bit on 32-bit computer"
copy foobar
)
)
(la ligne "copy foobar" abo ve échouera provoquant l'echec de)
Note, VisualStudio (et MSBuild) sera toujours exécuter un projet Makefile -. il ne vérifie pas l'horodatage sur le fichier de sortie, mais punts au lieu que le travail à ce qu'il attend être un autre outil de construction (nmake, cmake, make, ant, maven, etc.). Puisque, dans ce cas, il n'y a qu'une simple commande de copie et non un programme vérifiant si la copie doit être effectuée ou non, la copie se produit sur chaque génération.
VisualStudio toujours en cours d'exécution Projets de makefile signifie également que chaque fois que vous appuyez sur F5 pour déboguer votre projet, VisualStudio vous embêter avec un pop mal rédigé une boîte de dialogue (si vous ne l'avez pas dit que ce pas) vous dire que votre projet est obsolète et que vous devez le reconstruire. Si vous demandez à VisualStudio de ne pas afficher la boîte de dialogue, il effectuera la copie sans demander avant d'exécuter l'exécutable.
Pourquoi n'avez-vous pas pu créer un fichier batch ou un fichier de commandes pour effectuer la copie? –
@JB King, je veux intégrer/envelopper tout dans msbuild. Des idées ou des échantillons recommandés? – George2
Voir ma réponse ci-dessous. –