2012-09-12 8 views
17

Voglio copiare un file xml dalla directory principale su bin\Debug dopo aver creato il progetto, ma la mia soluzione non funziona. Ho modificato .csproj di file e ha aggiunto:MsBuild copia il file dopo la creazione

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

Che cosa sto facendo di sbagliato? La costruzione ha successo.

+1

Qual è l'output di generazione per questo target MsBuild? Sospetto che tu debba inserire '$ MSBuildProjectDirectory \ Controllers.xml' –

+0

Sfortunatamente non è stato d'aiuto. Altre idee? – KlimczakM

risposta

36

La cartella di destinazione è (molto probabilmente) errata. Se lo specifichi con una barra rovesciata iniziale, in realtà è solo una forma breve per <current-drive-letter>\bin\Debug (rendendolo effettivamente un percorso assoluto, come C:\bin\Debug).

In entrambi utilizzare bin\Debug, o meglio ancora utilizzare la variabile OutputPath, che è impostato su bin\Debug o bin\Release a seconda della configurazione di generazione.

Esempio:

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

è il file XML nel vostro progetto? Quindi una delle sue proprietà è CopyToOutputDirectory. Impostalo su CopyAlways e quando il progetto verrà creato il file verrà copiato in bin \ debug.

1

È necessario specificare il percorso completo. Sospetto che l'attività di copia di MsBuild sia in esecuzione dal "Percorso predefinito" di Visual Studio e che il file non possa essere trovato. Inoltre, è molto probabile che il file finisca nella directory di destinazione della build.

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