使用MSBuild,我需要将转换配置文件复制到各个子目录。
我的目标正文中包含以下代码
<ItemGroup>
<EnvironmentDirectory Include="Environment\BackUp_Recovery\"/>
<EnvironmentDirectory Include="Environment\IST\"/>
<EnvironmentDirectory Include="Environment\Production\"/>
<EnvironmentDirectory Include="Environment\UAT\"/>
</ItemGroup>
<!-- Copy task to copy file to environment folders -->
<Copy SourceFiles="$(IntermediateOutputPath)$(TargetFileName).config"
DestinationFiles="@(EnvironmentDirectory -> '@(EnvironmentDirectory)$(TargetFileName).config')"
SkipUnchangedFiles="true">
<Output TaskParameter="CopiedFiles" ItemName="SuccessfullyCopiedFiles" />
</Copy>
原样,我收到以下错误消息。
“DestinationFiles”是指4个项目,“SourceFiles”是指1个项目。它们必须具有相同数量的项目。
当我查看输出窗口时,我会观察以下内容
2&gt;任务“复制”(TaskId:73) 2 - ;任务参数:SourceFiles = obj \ Release \ AIT.UI.WinForm.exe.config(TaskId:73) 2 - ;任务参数: 2 - ; DestinationFiles = 2 - ; @(EnvironmentDirectory)AIT.UI.WinForm.exe.config 2 - ; @(EnvironmentDirectory)AIT.UI.WinForm.exe.config 2 - ; @(EnvironmentDirectory)AIT.UI.WinForm.exe.config 2 - ; @(EnvironmentDirectory)AIT.UI.WinForm.exe.config(TaskId:73) 2 - ;任务参数:SkipUnchangedFiles = True(TaskId:73) 2&gt; C:\ AITDevelopment \ AIT.UI.WinForm \ AIT.UI.WinForm.csproj(634,5):错误MSB3094:“DestinationFiles”指的是4个项目,“SourceFiles”指的是1个项目(s )。它们必须具有相同数量的项目。 2&gt;完成执行任务“复制” - 失败。 (TASKID:73)
我将非常感谢您解决此问题。谢谢。
答案 0 :(得分:0)
以下内容将根据ItemGroup将单个源文件...复制到多个位置。
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="AllTargetsWrapper" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WorkingCheckout>.</WorkingCheckout>
</PropertyGroup>
<Target Name="AllTargetsWrapper">
<CallTarget Targets="CopyItTarget" />
</Target>
<ItemGroup>
<EnvironmentDirectory Include=".\Environment\BackUp_Recovery\"/>
<EnvironmentDirectory Include=".\Environment\IST\"/>
<EnvironmentDirectory Include=".\Environment\Production\"/>
<EnvironmentDirectory Include=".\Environment\UAT\"/>
</ItemGroup>
<PropertyGroup>
<TargetFileName>system</TargetFileName>
</PropertyGroup>
<Target Name="CopyItTarget">
<Exec Command="echo %(EnvironmentDirectory.Identity)"/>
<Copy SourceFiles="c:\windows\system.ini"
DestinationFiles="%(EnvironmentDirectory.Identity)$(TargetFileName).config"
/>
</Target>
</Project>