2010-12-01 18 views
14

Tengo un proyecto MVC y quiero dividir su salida.VS 2010. Post-build. Copie los archivos en múltiples directorios/ruta de salida múltiple

Quiero copiar todos los archivos DLL de este proyecto (todo el contenido del directorio Bin) a un directorio, y todas las Vistas (contenido del directorio Ver) a otro directorio de salida.

La configuración del proyecto en VS 2010 no me permite hacer eso simplemente.

Puedo especificar solo una ruta de salida en la configuración y no puedo especificar qué directorios o tipos de archivos copiar y dónde.

Creo que debería dejar el directorio de salida en su valor predeterminado y luego tengo que dividir el resultado como quiero con el comando Post-build.

Tal vez alguien hizo algo similar y ¿tiene alguna idea de cómo hacerlo mejor?

+0

Después de que los archivos se hayan creado en la carpeta de salida, ¿los diferentes tipos de archivos se pueden distinguir fácilmente por su finalización? –

Respuesta

20

La solución es

1) Establecer ruta de salida en el directorio en el que desea copiar los archivos * DLL en las propiedades del proyecto

2) Utilizando evento posterior a la generación de copiar el contenido del directorio Ver para el directorio que desea

en mi caso

1) ruta de salida me puse a

.. \ MyDestinationProjectName \ Bin \

caso 2) posterior a la generación copiar Ver directorio tiene este aspecto

xcopy "$ (ProjectDir) \" Vistas "$ (SolutionDir) \ MyDestinationProjectName \ Plugins \ views \ $ (ProjectName) \ "/ s/i/y

+1

'/ I' parámetro resuelto mi problema de error que ocurre cuando un archivo ya existe en el destino –

+1

De un proyecto predeterminado, quería copiar el ejecutable compilado en una carpeta de destino.El cmd de mi evento Post-Build fue 'xcopy" $ (SolutionDir) $ (Configuration) \ $ (TargetName) $ (TargetExt) "" C: \ MyOutputFolder "/ s/i/y', por si acaso ayuda a alguien . ¡Muy útil! – caiosm1005

+0

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

3

Esto debería ser un comentario a @ caiosm1005, pero me faltan puntos. Según lo indicado por @Riapp, use el comando xcopy. Una explicación detallada de los interruptores se puede encontrar aquí Xcopy and Xcopy32 Switches

Mi solución fue: xcopy "$(TargetDir)$(TargetFileName)" "C:\Mydestination" /s /i /y

El TargetDir contenían la ruta completa al archivo compilado y el TargetFileName es la combinación de TargetName y TargetExt. No agregue un separador de barra invertida después de una variable de directorio, p. $(TargetDir)\$(TargetFileName) fallará porque se interpretará como "TargetName**\\** TargetExt".

Una vez que vea los valores en las macros, debería ser fácil elegir lo que desea. Recuerde que debe hacer esto en cada proyecto dentro de su solución. Los eventos de compilación se pueden encontrar haciendo clic con el botón derecho en el proyecto, seleccionando propiedades y luego seleccionando la pestaña Build Events.

+0

Gracias. He encontrado formas mejores de hacer esto un tiempo después de hacer ese comentario. ¡Ese es el camino a seguir! – caiosm1005

Cuestiones relacionadas