2012-06-12 24 views
100

Tengo una solución con 3 proyectos en ella. Necesito copiar una vista de un proyecto a otro. Soy capaz de copiar el archivo DLL creado a través de eventos posteriores a la construcción de esta manera:Copie el archivo (s) de un proyecto a otro utilizando el evento de compilación posterior ... VS2010

enter image description here

así que quiero copiar el archivo en un proyecto de '/Views/ModuleHome/Index.cshtml' a una carpeta en el proyecto 2. ¿Cómo copio archivo (s) a mi proyecto deseado a través de un evento post-construcción? Gracias

Respuesta

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

y si desea copiar carpetas enteras:

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

Actualización: aquí está la versión de trabajo

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

Éstos son algunos interruptores de uso general 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

Agregué esta línea a la compilación de mi publicación y me aparece este error "Error El comando" xcopy "C: \ Users \ tcompton \ Descargas \ MEFMVCPOC \ ModuleA \ Views \ ModuleAHome \ Index.cshtml" "C: \ Users \ tcompton \ Downloads \ MEFMVCPOC \ MEFMVCPOC \ Views \ ModuleAHome "" salió con el código 2. " ¿Qué significa esto? – BoundForGlory

+0

Mire la ventana de salida: 'Ctrl + W + O'. ¿La carpeta 'Views \ ModuleAHome' existe en la ubicación de destino? Mire la ventana de salida para ver el comando exacto que se está ejecutando y luego lea la documentación del comando xcopy para comprender los diferentes interruptores disponibles: 'xcopy /?'. –

+1

La carpeta 'Views \ ModuleAHome' existe pero no forma parte del proyecto de destino, lo que significa que debe hacer clic en 'mostrar todos los archivos' para que aparezca en VS. – BoundForGlory

7

llamada Batch archivo que se desarrollará Xcopy para la fuente de los archivos necesarios para el destino

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

Aviso las comillas en la ruta de origen y la ruta de destino, pero no en ruta a exludelist archivo txt.

contenido de ExcludedFilesList.txt es la siguiente: Cs \

estoy usando este comando para copiar un archivo de un proyecto en mi solución, a otro y excluyendo los archivos .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

Gracias. El/exclude: funciona después de agregar comillas a 'your-source-path' y' your-destination-path'. Sin esas citas, no funciona en absoluto. – AechoLiu

11

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

/F - Muestra fuente completo & nombres de archivo de destino

/R - Esto sobrescribir archivos de sólo lectura

/Y - Suprime el mensaje para sobrescribir un archivo existente (s)

/I - ASSUM es que el destino es el directorio (pero debe terminar con)

Un pequeño truco: en el objetivo, debe terminar con el carácter \ para decirle xcopy que el objetivo es el directorio y no el archivo.

2

Al igual que en las respuestas anteriores, también estoy sugiriendo xcopy. Sin embargo, me gustaría agregar a la respuesta de Hallgeir Engen con el parámetro /exclude. Parece que hay un error con el parámetro que le impide trabajar con nombres de ruta que son largos o que contienen espacios, ya que las comillas no funcionarán. Los nombres de ruta deben estar en el formato "DOS" con "Documentos" traduciéndose a "DOCUME ~ 1" (de acuerdo con this source).

lo tanto, si desea utilizar el \ excluye parámetro, hay una solución here:

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

Tenga en cuenta que las rutas de origen y de destino puede (y debe, si contienen espacios) sea entre comillas, pero no la ruta al archivo de exclusión.

5

Lo uso así.

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 

Tenga en cuenta el uso de esto. $ (TARGETDIR) tiene ya '\' "D: \ MyProject \ bin \" = $ (TargetDir)

Puede encontrar la macro en el editor de comandos

enter image description here

2

Si usted quiere tomar en cuenta la plataforma (x64, x86, etc) y la configuración (Debug o Release) sería algo como esto:

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