Copie los archivos de un proyecto a otro usando el evento posterior a la compilación ... VS2010

Tengo una solución con 3 proyectos en ella. Necesito copiar una vista de un proyecto a otro. Puedo copiar la DLL creada a través de eventos posteriores a la compilación de esta manera:

enter image description here

Entonces, quiero copiar el archivo en el proyecto uno '/Views/ModuleHome/Index.cshtml' a una carpeta en el proyecto 2. ¿Cómo copio los archivos a mi proyecto deseado a través del evento posterior a la compilación? Gracias

preguntado el 12 de junio de 12 a las 18:06

8 Respuestas

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

Aquí hay algunos interruptores de uso común con xcopy:

  • /I - tratar como un directorio si se copian varios archivos.
  • /Q - No mostrar los archivos que se están copiando.
  • /S - Copiar subdirectorios a menos que estén vacíos.
  • /E - Copiar subdirectorios vacíos.
  • /Y - No solicitar la sobrescritura de archivos existentes.
  • /R - Sobrescribir archivos de solo lectura.

Respondido el 16 de Septiembre de 19 a las 08:09

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

Mira la ventana de salida: Ctrl+W+O. ¿El Views\ModuleAHome carpeta 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 /?. - darin dimitrov

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. - Con destino a la gloria

No creo que el hecho de que la carpeta de destino no sea parte del proyecto de destino haga ninguna diferencia para xcopy. Este comando opera directamente con el sistema de archivos. En cuanto a hacer que esta carpeta aparezca como parte del proyecto de destino, la automatización de esta tarea puede ser más difícil. - darin dimitrov

Entendido... xcopy "$(ProjectDir)Views\ModuleAHome\Index.cshtml" "$(SolutionDir)MEFMVCPOC\Views\ModuleAHome\" /Y /I....este artículo ayudó junto con su entrada social.msdn.microsoft.com/Forums/uk/csharpgeneral/thread/… - Con destino a la gloria

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

Observe las comillas en la ruta de origen y la ruta de destino, pero no en la ruta al archivo txt de la lista de exclusión.

El contenido de ExcludedFilesList.txt es el siguiente: .cs\

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

Respondido 14 Feb 13, 07:02

Gracias. /excluir: funciona después de agregar comillas a your-source-path y your-destination-path. Sin esas comillas no funciona en absoluto. - AecoLiu

@AechoLiu Las comillas siempre son necesarias si la ruta de su archivo tiene un espacio en blanco, por ejemplo "My File.txt". - felipe romero

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

/F: muestra los nombres completos de los archivos de origen y de destino

/R: esto sobrescribirá los archivos de solo lectura

/Y: suprime la solicitud de sobrescribir un archivo existente

/I: asume que el destino es un directorio (pero debe terminar en )

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

Respondido 20 Jul 15, 08:07

Llame al Batch archivo que se ejecutará Xcopy para los archivos requeridos de origen a destino

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

Respondido el 12 de junio de 12 a las 18:06

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) ya tiene '\' "D:\MyProject\bin\" = $(TargetDir)

Puede encontrar macros en el editor de comandos

enter image description here

Respondido 03 Jul 17, 22:07

Proyecto @HarshilDoshi → Propiedad del proyecto → Eventos de compilación → PostBuildEvent - Polluks

Este comando funciona de maravilla para mí:

for /r "$(SolutionDir)libraries" %%f in (*.dll, *.exe) do @xcopy "%%f" "$(TargetDir)"

It recursivamente copias cada dll y exe archivo de MySolutionPath\libraries en el bin\debug or bin\release.

Puedes encontrar más información en aquí

Respondido 21 Feb 19, 15:02

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

Entonces, si desea usar el parámetro \exclude, hay una solución aquí:

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 destino pueden (y deben, si contienen espacios) estar entre comillas, pero no la ruta al archivo de exclusión.

Respondido 08 Abr '17, 18:04

Si quieres tener en cuenta la plataforma (x64, x86, etc.) y el configuración (Debug o Release) sería algo como esto:

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

respondido 08 nov., 17:15

Esto no funciona cuando la plataforma es cualquier CPU. Debería usar $(OutDir) en su lugar. - Diego

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.