2012-09-12 7 views
17

Chcę skopiować plik xml z głównego katalogu do bin\Debug po zbudowaniu projektu, ale moje rozwiązanie nie działa. I edytowane .csproj plik i dodaje:MsBuild plik kopii po kompilacji

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

Co robię źle? Budowa jest udana.

+1

Co to jest wynik kompilacji dla tego celu MsBuild? Podejrzewam, że musisz wstawić '$ MSBuildProjectDirectory \ Controllers.xml' –

+0

Niestety to nie pomogło. Jakieś inne pomysły? – KlimczakM

Odpowiedz

36

Folder docelowy jest (najprawdopodobniej) nieprawidłowy. Jeśli podasz go z wiodącym ukośnikiem odwrotnym, w rzeczywistości jest to tylko krótka skrócona dla <current-drive-letter>\bin\Debug (co czyni ją efektywną ścieżką bezwzględną, taką jak C:\bin\Debug).

Albo użyć bin\Debug, albo jeszcze lepiej użyć zmiennej OutputPath, który jest ustawiony na bin\Debug lub bin\Release zależności od konfiguracji kompilacji.

Przykład:

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

Czy plik xml w projekcie? Następnie jedną z jego właściwości jest CopyToOutputDirectory. Ustaw go na CopyAlways, a gdy projekt zostanie zbudowany, plik zostanie skopiowany do bin \ debug.

1

Należy podać pełną ścieżkę. Podejrzeń, że zadanie kopiowania MsBuild działa z "Domyślna ścieżka" Visual Studio, a pliku nie można znaleźć. Ponadto najprawdopodobniej chcesz, aby plik znalazł się w katalogu docelowym kompilacji.

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