Copia i file da un progetto all’altro utilizzando l’evento post build … VS2010

Ho una soluzione con 3 progetti in esso. Ho bisogno di copiare una vista da un progetto all’altro. Sono in grado di copiare la DLL creata tramite eventi post build in questo modo:

inserisci la descrizione dell'immagine qui

Quindi voglio copiare il file nel progetto uno ‘/Views/ModuleHome/Index.cshtml’ in una cartella nel progetto 2. Come copio i file nel mio progetto desiderato tramite l’evento post-build? Grazie

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

e se vuoi 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 usati 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. 
 xcopy "your-source-path" "your-destination-path" /D /y /s /r /exclude:path-to-txt- file\ExcludedFilesList.txt 

Notare le virgolette nel percorso e nel percorso di destinazione, ma non nel percorso del file txt di exludelist.

Il contenuto di ExcludedFilesList.txt è il seguente: .cs \

Sto usando questo comando per copiare file da un progetto nella mia soluzione, in un altro ed escludendo i file .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. 

xcopy “$ (TargetDir) * $ (TargetExt)” “$ (SolutionDir) \ Scripts \ MigrationScripts \ Library \” / F / R / Y / I

/ F – Visualizza i nomi completi dei file di origine e di destinazione

/ R – Questo sovrascriverà i file di sola lettura

/ Y – Elimina la richiesta di sovrascrivere un file esistente

/ I – Presuppone che la destinazione sia directory (ma che deve terminare con)

Un piccolo trucco: nella mira devi finire con il carattere \ per dire a xcopy che la destinazione è una directory e non un file!

Chiama il file Batch che eseguirà Xcopy per l’origine dei file richiesti a destinazione

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

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 già ‘\’ “D: \ MyProject \ bin \” = $ (TargetDir)

Puoi trovare la macro nell’editor di comandi

inserisci la descrizione dell'immagine qui

Come le risposte precedenti, sto anche suggerendo xcopy . Tuttavia, vorrei aggiungere alla risposta di Hallgeir Engen con 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 questa fonte ).

Quindi, se si desidera utilizzare il parametro \ exclude, è disponibile una soluzione alternativa:

 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 destinazione possono (e dovrebbero, se contengono spazi) essere tra virgolette, ma non il percorso del file di esclusione.

Se si vuole prendere in considerazione la piattaforma (x64, x86 ecc.) E la configurazione (Debug o Release), sarebbe qualcosa del genere:

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