2012-05-09 10 views
0

私が直面する問題は私のターゲット 'CopyBuildFiles'がコピーしないので、ビルドフォルダを見つけることができません。ビルドフォルダはプロパティ$(BuildFolder)で定義されています。このフォルダ名はdate.timeに基づいて作成され、 'CopyBuildFiles'より前に実行されていた以前のターゲットの1つで作成されます。MSBuildコピータスクの問題

$(BuildFolder)からこれを派生させるのではなく、@(SrcFiles)のパスをハードコードすると動作します。

ここで何が起こっているのですか?どのように解決できますか?

多くのありがとうございます。

<PropertyGroup> 

    <year>$([System.DateTime]::Now.ToString("yy"))</year> 
    <month>$([System.DateTime]::Now.ToString("MM"))</month> 
    <day>$([System.DateTime]::Now.ToString("dd"))</day> 
    <time>$([System.DateTime]::Now.ToString("HHmm"))</time> 
    <AssemblyFileVersionAttribute>[$(year).$(month).$(day).$(time))]  </AssemblyFileVersionAttribute> 
    <BuildFolder>c:\website.builds\$(AssemblyFileVersionAttribute)\</BuildFolder> 
    <IISFolder>c:\website.publish\</IISFolder>   
    <LogDirectory>C:\website.builds.logs</LogDirectory> 
    <LogFile>C:\website.builds.logs\Buildlog_$(AssemblyFileVersionAttribute).txt</LogFile> 

</PropertyGroup> 


<Target Name="PreBuild"> 
    <MakeDir Directories="$(LogDirectory)" />  
    <RemoveDir Directories="$(IISFolder)"></RemoveDir>   
    <MakeDir Directories="$(BuildFolder)" /> 
    <MakeDir Directories="$(IISFolder)" />   
</Target> 

<Target Name="Compile"> 
    <MSBuild Projects="$(MSBuildStartupDirectory)\websitev2.sln" Properties="OutDir=$(BuildFolder)\" />   
</Target> 

<ItemGroup> 
    <SrcFiles Include="$(BuildFolder)_PublishedWebsites\**\*.*"/> 
</ItemGroup> 

<Target Name="CopyBuildFiles" 
      Inputs="@(SrcFiles)" 
      Outputs= 
     "@(SrcFiles->'$(IISFolder)%(RecursiveDir)%(Filename)%(Extension)')"> 
    <Copy SourceFiles="@(SrcFiles)" 
      DestinationFiles="@(SrcFiles->'$(IISFolder)%(RecursiveDir)%(Filename)%(Extension)')" 
     />  
</Target> 

<Target Name="Deploy"> 
    <CallTarget Targets="PreBuild" /> 
    <CallTarget Targets="Compile" /> 
    <CallTarget Targets="CopyBuildFiles" /> 
</Target> 

+0

あなたが持つコマンドラインからMSBuildを実行する場合は '/冗長:DIAG' フラグを、出力が何と言っていますか? – SuperJumbo

答えて

0

あなたの目標の一つは、$(BuildFolder)プロパティを定義するので、@(SrcFiles)項目グループは、同じターゲットで、またはいくつかの他にも定義する必要があります$(BuildFolder)が定義された後に実行されるターゲット。このような

何か:

<Target Name="MyTarget"> 
    <PropertyGroup> 
     <BuildFolder>... some path ... </BuildFolder> 
    </PropertyGroup> 
    <ItemGroup> 
     <SrcFiles Include="$(BuildFolder)_PublishedWebsites\**\*.*"/> 
    </ItemGroup> 
</Target> 
+0

c:\ website.builds \ $(AssemblyFileVersionAttribute)これをPreBuildターゲットの後に呼びますが、まだ運がありません。 –

0
Replaced ItemGroup with **CreateItem**. This makes the copy work. 
**CreateItem** works without parameters. The folder name did not get passed through a parameter for some reason??!? 

<Target Name="BuildInit"> 
    <CreateItem Include="$(BuildFolder)_PublishedWebsites\**\*.*"> 
     <Output TaskParameter="Include" ItemName="YourFilesToCopy" /> 
    </CreateItem> 

    <Copy SourceFiles="@(YourFilesToCopy)" 
        DestinationFiles="@(YourFilesToCopy->'$(IISFolder)\%(RecursiveDir)%(Filename)%(Extension)')" /> 
    </Target> 
関連する問題