2012-06-12 6 views
100

Ho una soluzione con 3 progetti. Ho bisogno di copiare una vista da un progetto all'altro. Sono in grado di copiare la DLL creato tramite eventi post costruire in questo modo:Copia file da un progetto all'altro utilizzando l'evento post build ... VS2010

enter image description here

Quindi voglio copiare il file in un singolo progetto '/Views/ModuleHome/Index.cshtml' in una cartella del progetto 2. Come si copiano i file sul progetto desiderato tramite l'evento post-build? Grazie

risposta

236
xcopy "$(ProjectDir)Views\Home\Index.cshtml" "$(SolutionDir)MEFMVCPOC\Views\Home" 

e se si desidera copiare intere cartelle:

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

Aggiornamento: Ecco la versione funzionante

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

Ecco alcuni interruttori comunemente utilizzati con xcopy:

/I - treat as a directory if copying multiple files 
/Q - Do not display the files being copied. 
/S - Copy subdirectories unless empty. 
/E - Copy empty subdirectories. 
/Y - Do not prompt for overwrite of existing files. 
/R - Overwrite read only files. 
+0

Ho aggiunto questa riga al mio post build e ottengo questo errore "Errore Il comando" xcopy "C: \ Users \ tcompton \ Download \ MEFMVCPOC \ ModuleA \ Views \ ModuleAHome \ Index.cshtml" "C: \ Users \ tcompton \ Download \ MEFMVCPOC \ MEFMVCPOC \ Viste \ ModuleAHome "" terminato con codice 2. " Cosa significa questo? – BoundForGlory

+0

Guarda la finestra di output: 'Ctrl + W + O'. La cartella 'Views \ ModuleAHome' esiste nella posizione di destinazione? Guarda la finestra di output per il comando esatto in esecuzione e poi leggi la documentazione per il comando xcopy per capire i diversi switch disponibili: 'xcopy /?'. –

+1

La cartella 'Views \ ModuleAHome' esiste ma non fa parte del progetto di destinazione, il che significa che devi fare clic su "mostra tutti i file" affinché appaia in VS. – BoundForGlory

7

chiamata Batch file che verrà eseguito Xcopy per la fonte di file necessari per destinazione

call "$(SolutionDir)scripts\copyifnewer.bat" 
18
xcopy "your-source-path" "your-destination-path" /D /y /s /r /exclude:path-to-txt- file\ExcludedFilesList.txt 

Nota le quotazioni di percorso di origine e percorso di destinazione, ma non nel percorso exludelist file txt.

Contenuto ExcludedFilesList.txt è la seguente: cs \

sto usando questo comando per copiare file da un progetto nella mia soluzione, ad un altro ed escludendo cs file.

/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

Grazie. Il/exclude: funziona dopo l'aggiunta di virgolette a 'your-source-path' e' your-destination-path'. Senza quelle citazioni non funziona affatto. – AechoLiu

11

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

/F - Visualizza sorgente completo & nomi dei file di destinazione

/R - Questo sovrascrive file di sola lettura

/Y - Sopprime richiede di sovrascrivere un file esistente (s)

/I - ASSUM es quella destinazione è directory (ma deve terminare con)

Un piccolo inganno - nella destinazione è necessario terminare con il carattere \ per indicare a xcopy che la destinazione è directory e non file!

2

Come le risposte precedenti, sto anche suggerendo xcopy. Tuttavia, vorrei aggiungere alla risposta di Hallgeir Engen il parametro /exclude. Sembra esserci un bug con il parametro che impedisce di lavorare con nomi di percorso lunghi o che contengono spazi, in quanto le virgolette non funzioneranno. I nomi dei percorsi devono essere nel formato "DOS" con "Documenti" che traduce in "DOCUME ~ 1" (secondo lo this source).

Quindi, se si desidera utilizzare il \ esclude parametro, c'è una soluzione here:

cd $(SolutionDir) 
xcopy "source-relative-to-path-above" "destination-relative-to-path-above 
/exclude:exclude-file-relative-path 

Si noti che i percorsi di origine e di destinazione può (e dovrebbe, se contengono spazi) essere tra virgolette, ma non il percorso per il file di esclusione.

5

Lo uso così.

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 

Nota l'uso di questo. $ (TargetDir) ha gia '\' "D: \ MyProject \ bin \" = $ (TargetDir)

È possibile trovare la macro in Editor comandi

enter image description here

2

Se si vuole prendere in considerazione la piattaforma di (x64, x86, ecc) e la configurazione (Debug o Release) sarebbe qualcosa di simile:

xcopy "$(SolutionDir)\$(Platform)\$(Configuration)\$(TargetName).dll" "$(SolutionDir)TestDirectory\bin\$(Platform)\$(Configuration)\" /F /Y 
Problemi correlati