2009-03-03 8 views
11

ビルドが完了した後に生成されるファイルをコピーするタスクからなるbuild.projファイルを作成しました。問題は、これらのファイルは最初にコピーされず、ファイルをコピーできるようにbuild.projでmsbuildを再度実行する必要があることです。いただきました!次build.projファイルを間違って誰も私を伝えることができますしてください:スクリプトが解析されるときMSBuildコピータスクが最初にファイルをコピーしない

<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

内CreateItemタグを追加します。 –

+0

申し訳ありませんが、スクリプトの挿入に問題がありました...すべては今すぐソートされています – Draco

答えて

21

itemgroupsが評価されています。その時点であなたのファイルはまだありません。ファイルを見つけるには、ターゲット内からitemgroupを埋める必要があります。

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

この例では、Include属性の式を使用して「CopySqlScript」という名前のItemGroupを作成します。

編集:

今、私はあなたのスクリプトを読むことができます:、それは理解できないですしてくださいあなたのコードのインデントを修正し、あなたのCopyToBuildFolderターゲット

+0

これは完璧に動作します...ありがとう:) – Draco

+0

NP、これも私には分かりません。 – thijs

+0

ちょうど私が探していたもの、thx Draco&thijs – GvS

関連する問題