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:
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
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