¿Cómo corrijo el error MSB3073 en mi evento post-construcción?

Estoy trabajando en un proyecto que requiere que las DLL generadas por la construcción de mi solución para ser copiado desde la carpeta bin a otra carpeta, ambos de los cuales están en mi máquina, en mi unidad C. I'he escrito un archivo por lotes que utiliza xcopy para lograr esto, que se puede ver aquí:

xcopy /s /y /q "C:\Users\scogan\Documents\Visual Studio 2012\Projects\Organizr\Server\bin\Debug\Organizr.Services.dll" "C:\inetpub\wwwroot\AppServer\bin\"
xcopy /s /y /q "C:\Users\scogan\Documents\Visual Studio 2012\Projects\Organizr\Server\bin\Debug\Organizr.Services.pdb" "C:\inetpub\wwwroot\AppServer\bin\"

Ahora, I'he intentado numerosas iteraciones de este archivo, que se encuentra en:

C:\Users\scogan\Desktop\CopyFiles.bat

por lo que mi post-construir evento línea de comandos se parece a esto:

call C:\Users\scogan\Desktop\CopyFiles.bat

I'he ejecutado este archivo por lotes por su cuenta con dos archivos de texto en carpetas en mi escritorio, y funciona bien. También lo he ejecutado tal cual con los archivos que necesito copiar, y también funciona bien. Sin embargo, cuando intento ejecutar esto como un evento post-construcción, obtengo esta salida:

1>  Organizr -> C:\Users\scogan\Documents\Visual Studio 2012\Projects\Organizr\Client\bin\Debug\Organizr.exe
1>  File not found - Organizr.Services.dll
1>  0 File(s) copied
1>  0 File(s) copied
1>  File not found - Organizr.Services.pdb
1>c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(4291,5): error MSB3073: The command "call C:\Users\scogan\Desktop\CopyFiles.bat" exited with code 4.

He hecho algunas investigaciones, y encontró que el código de error 4 significa que "Se produjo un error de inicialización. No hay suficiente memoria o espacio en disco, o ha introducido un nombre de unidad no válida o sintaxis no válida en la línea de comandos."

I've también buscó lo que es MSB3073, y haven't realmente encontró mucho que me puede ayudar allí. Entonces, mi pregunta es ¿qué estoy haciendo mal? ¿Son las rutas absolutas lío? Cualquier ayuda aquí es apreciada.

Solución

Jugando con diferentes propiedades del proyecto, encontré que el orden de construcción del proyecto era el problema. El proyecto que generó los archivos que quería copiar fue construido segundo, pero el proyecto que estaba ejecutando el archivo por lotes como un evento post-construcción fue construido primero, así que simplemente adjunté el evento de construcción al segundo proyecto en su lugar, y funciona bien. Gracias por su ayuda, todo el mundo, sin embargo.

Comentarios (1)

Prefiera la tarea MsBuild "Copy" en un objetivo AfterBuild en lugar de un evento post-construcción.

Añada este objetivo a su archivo de proyecto y elimine el PostBuildEvent.



Comentarios (6)

Por si sirve de algo, en mi caso el problema se produjo al utilizar '/' como separador de directorios en un comando copy. Debe utilizar barras invertidas.

Comentarios (0)