2012-09-12 9 views
17

Quiero copiar un archivo xml del directorio principal al bin\Debug después de compilar el proyecto, pero mi solución no funciona. He editado .csproj archivo y añadí:MsBuild copia el archivo después de la compilación

<Target Name="AfterBuild"> 
    <Copy SourceFiles="Controllers.xml" DestinationFolder="\bin\Debug" ContinueOnError="true" /> 
</Target> 

¿Qué estoy haciendo mal? La construcción es exitosa.

+1

¿Cuál es la salida de compilación para este objetivo MsBuild? Sospecho que debes poner '$ MSBuildProjectDirectory \ Controllers.xml' –

+0

Desafortunadamente no sirvió. ¿Alguna otra idea? – KlimczakM

Respuesta

36

Su carpeta de destino es (muy probable) incorrecta. Si lo especifica con una barra diagonal inversa inicial, en realidad es solo una forma abreviada para <current-drive-letter>\bin\Debug (lo que la convierte en una ruta absoluta, como C:\bin\Debug).

O bien utilizar bin\Debug, o mejor aún, utilizar la variable OutputPath, que se ha configurado como bin\Debug o bin\Release dependiendo de su configuración de generación.

Ejemplo:

<Target Name="AfterBuild"> 
    <Copy SourceFiles="Controllers.xml" DestinationFolder="$(OutputPath)" ContinueOnError="true" /> 
</Target> 
4

es el archivo XML en su proyecto? Entonces, una de sus propiedades es CopyToOutputDirectory. Configúrelo en CopyAlways y cuando el proyecto se genere, el archivo se copiará en bin \ debug.

1

Debe especificar la ruta completa. Sospecho que la tarea de copia de MsBuild se está ejecutando desde la "ruta de acceso predeterminada" de Visual Studio, y no se puede encontrar el archivo. Además, lo más probable es que desee que el archivo termine en el directorio de destino de compilación.

<Target Name="AfterBuild"> 
    <Copy SourceFiles="$(ProjectDir)Controllers.xml" DestinationFolder="$(TargetDir)" ContinueOnError="true" /> 
</Target> 
Cuestiones relacionadas