我有以下一段 msbuild 代码:
<PropertyGroup>
<DirA>C:\DirA\</DirA>
<DirB>C:\DirB\</DirB>
</PropertyGroup>
<Target Name="CopyToDirA"
Condition="Exists('$(DirA)') AND '@(FilesToCopy)' != ''"
Inputs="@(FilesToCopy)"
Outputs="@(FilesToCopy -> '$(DirA)%(Filename)%(Extension)')">
<Copy SourceFiles="@(FilesToCopy)" DestinationFolder="$(DirA)" />
</Target>
<Target Name="CopyToDirB"
Condition="Exists('$(DirB)') AND '@(FilesToCopy)' != ''"
Inputs="@(FilesToCopy)"
Outputs="@(FilesToCopy -> '$(DirB)%(Filename)%(Extension)')">
<Copy SourceFiles="@(FilesToCopy)" DestinationFolder="$(DirB)" />
</Target>
<Target Name="CopyFiles" DependsOnTargets="CopyToDirA;CopyToDirB"/>
因此,调用目标CopyFiles
会将相关文件复制到$(DirA)
and $(DirB)
,前提是它们尚未存在且不是最新的。
但目标CopyToDirA
和CopyToDirB
外观相同,除了一个复制到$(DirA)
和另一个复制到$(DirB)
。是否可以将它们统一为一个目标,首先调用 with $(DirA)
,然后调用 with $(DirB)
?
谢谢。