2009-03-03 10 views
11

Utworzono plik build.proj, który składa się z zadania kopiowania plików, które zostaną wygenerowane po zakończeniu kompilacji. Problem polega na tym, że te pliki nie są kopiowane za pierwszym razem i muszę ponownie uruchomić msbuild na pliku build.proj, aby pliki mogły być kopiowane. Proszę może ktoś mi powiedzieć co jest nie tak z następującego pliku build.proj:Narzędzie MSBuild Copy nie kopiuje plików za pierwszym razem

<Configuration Condition="'$(Configuration)' == ''">Debug</Configuration> 

<SourcePath Condition="'$(SourcePath)' == ''">$(MSBuildProjectDirectory)</SourcePath> 

<BuildDir>$(SourcePath)\build</BuildDir> 

</PropertyGroup> 

<ItemGroup> 
    <Projects 
     Include="$(SourcePath)\src\myApp\application.csproj"> 
    </Projects> 
</ItemGroup> 

<Target Name="Build"> 
    <Message text = "Building project" />  
    <MSBuild 
    Projects="@(Projects)" 
    Properties="Configuration=$(Configuration)" /> 
</Target> 

<ItemGroup> 
    <OutputFiles Include ="$(MSBuildProjectDirectory)\**\**\bin\Debug\*.*"/> 
</ItemGroup> 

<Target Name="CopyToBuildFolder"> 
    <Message text = "Copying build items" /> 
    <Copy SourceFiles="@(OutputFiles)" DestinationFolder="$(BuildDir)"/> 
</Target> 

<Target Name="All" 
    DependsOnTargets="Build; CopyToBuildFolder"/> 

</Project> 
+0

Fix wcięcia kodu proszę, to nie jest zrozumiałe. –

+0

Przepraszam, miałem trochę problemów z wstawieniem skryptu ... Wszystko jest teraz posortowane. – Draco

Odpowiedz

21

W itemgroups są oceniane gdy skrypt jest analizowany. W tym czasie Twoje pliki jeszcze tam nie są. Aby znaleźć pliki, musisz wypełnić grupę przedmiotów z miejsca docelowego.

<!-- SQL Scripts which are needed for deployment --> 
    <Target Name="BeforeCopySqlScripts"> 
    <CreateItem Include="$(SolutionRoot)\04\**\Databases\**\*.sql"> 
     <Output ItemName="CopySqlScript" TaskParameter="Include"/> 
    </CreateItem> 
    </Target> 

Ten przykład tworzy grupę przedmiotów o nazwie "CopySqlScript" za pomocą wyrażenia w atrybucie Uwzględnij.

Edit:

Teraz mogę czytać scenariusz: dodać tag CreateItem wewnątrz docelowego CopyToBuildFolder

+0

To działa idealnie ... dzięki :) – Draco

+0

NP, zajęło mi to trochę czasu. – thijs

+0

Po prostu to, czego szukałem, thx Draco & thijs – GvS

Powiązane problemy