0

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

$(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>

4

2 に答える 2

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>
于 2012-05-10T01:29:06.470 に答える
0

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

このようなもの:

<Target Name="MyTarget">
    <PropertyGroup>
        <BuildFolder>... some path ... </BuildFolder>
    </PropertyGroup>
    <ItemGroup>   
        <SrcFiles Include="$(BuildFolder)_PublishedWebsites\**\*.*"/>   
    </ItemGroup>  
</Target>
于 2012-05-09T02:20:03.427 に答える