149 votes

Copier le(s) fichier(s) d'un projet à un autre en utilisant l'événement post build...VS2010

J'ai une solution qui contient 3 projets. J'ai besoin de copier une vue d'un projet à un autre. Je suis en mesure de copier la DLL créée via des événements post-construction comme suit :

enter image description here

Je veux donc copier le fichier du projet 1 '/Views/ModuleHome/Index.cshtml' vers un dossier du projet 2. Comment puis-je copier le(s) fichier(s) vers le projet souhaité via l'événement post-build ? Merci

337voto

Darin Dimitrov Points 528142
xcopy "$(ProjectDir)Views\Home\Index.cshtml" "$(SolutionDir)MEFMVCPOC\Views\Home"

et si vous voulez copier des dossiers entiers :

xcopy /E /Y "$(ProjectDir)Views" "$(SolutionDir)MEFMVCPOC\Views"

Mise à jour : voici la version fonctionnelle

xcopy "$(ProjectDir)Views\ModuleAHome\Index.cshtml" "$(SolutionDir)MEFMVCPOC\Views\ModuleAHome\" /Y /I

Voici quelques interrupteurs couramment utilisés avec xcopy :

  • /I - traiter comme un répertoire si vous copiez plusieurs fichiers.
  • /Q - Ne pas afficher les fichiers en cours de copie.
  • /S - Copie les sous-répertoires sauf s'ils sont vides.
  • /E - Copier les sous-répertoires vides.
  • /Y - Ne pas demander l'écrasement des fichiers existants.
  • /R - Écraser les fichiers en lecture seule.

3 votes

J'ai ajouté cette ligne à mon post build et j'obtiens cette erreur "Error 1 The command "xcopy "". C:\Users\tcompton\Downloads\MEFMVCPOC\ModuleA\Views\ModuleA Accueil \Index.cshtml " " C:\Users\tcompton\Downloads\MEFMVCPOC\MEFMVCPOC\Views\Modul eAHome"" a quitté avec le code 2." Qu'est-ce que cela signifie ?

0 votes

Regardez la fenêtre de sortie : Ctrl+W+O . Est-ce que le Views\ModuleAHome existe-t-il à l'emplacement cible ? Regardez la fenêtre de sortie pour connaître la commande exacte en cours d'exécution, puis lisez la documentation de la commande xcopy pour comprendre les différents commutateurs disponibles : xcopy /? .

1 votes

Le dossier "Views \ModuleAHome existe mais ne fait pas partie du projet cible, ce qui signifie que vous devez cliquer sur 'show all files' pour qu'il apparaisse dans VS.

24voto

Hallgeir Engen Points 217
xcopy "your-source-path" "your-destination-path" /D /y /s /r /exclude:path-to-txt- file\ExcludedFilesList.txt

Remarquez les guillemets dans le chemin d'accès source et le chemin d'accès destination, mais pas dans le chemin d'accès au fichier txt exludelist.

Le contenu de ExcludedFilesList.txt est le suivant : .cs\

J'utilise cette commande pour copier des fichiers d'un projet de ma solution à un autre, en excluant les fichiers .cs.

/D Copy only files that are modified in sourcepath
/y Suppresses prompting to confirm you want to overwrite an existing destination file.
/s Copies directories and subdirectories except empty ones.
/r Overwrites read-only files.

0 votes

Merci. Le /exclude : fonctionne après avoir ajouté des guillemets à your-source-path y your-destination-path . Sans ces citations, cela ne fonctionne pas du tout.

1 votes

@AechoLiu Les guillemets sont toujours nécessaires si votre chemin de fichier comporte des espaces vides, par exemple. "My File.txt" .

14voto

Namrata Jain Points 141

Xcopy "$(TargetDir)*$(TargetExt)" "$(SolutionDir) \Scripts\MigrationScripts\Library\ " /F /R /Y /I

/F - Affiche les noms complets des fichiers source et cible

/R - Ceci va écraser les fichiers en lecture seule.

/Y - Supprime la demande d'écraser un ou plusieurs fichiers existants

/I - Suppose que la destination est un répertoire (mais doit se terminer par )

Une petite astuce - dans target, vous devez terminer par le caractère \ pour indiquer à xcopy que target est un répertoire et non un fichier !

9voto

Super-Mantis Points 111

Je l'utilise comme ça.

xcopy "$(TargetDir)$(TargetName).dll" "$(SolutionDir)Lib\TIRM\x86\" /F /Y 
xcopy "$(TargetDir)$(TargetName).lib" "$(SolutionDir)Lib\TIRM\x86\" /F /Y 

/F : Copy source is File   
/Y : Overwrite and don't ask me

Notez l'utilisation de ceci. $(TargetDir) a déjà '-'. " D:\MyProject\bin\ " = $(TargetDir)

Vous pouvez trouver la macro dans l'éditeur de commandes

enter image description here

1 votes

@HarshilDoshi Projet Immobilier Construire Événements PostBuildEvent

8voto

swapneel Points 1572

Appelez Batch qui exécutera Xcopy pour les fichiers requis de la source à la destination

call "$(SolutionDir)scripts\copyifnewer.bat"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X