如何将具有MSBuild的文件复制到同一文件夹但具有不同的扩展名?

时间:2013-03-01 11:09:35

标签: msbuild copy msbuild-task

假设我的ItemGroup定义如下:

  <ItemGroup>
<ReactorFile Include="MyExecutable\bin\x86\Release\MyExecutable.exe"/>
<ReactorFile Include="MyLibrary\bin\x86\Release\MyLibrary*.dll"/>
</ItemGroup>

定义了一个PropertyGroup:

<PropertyGroup>
<ReactorUnObfuscatedFileExt>.unobfuscated</ReactorUnObfuscatedFileExt>
</PropertyGroup>

我还在另一个文件中定义了一个目标:

<Target Name="CopyUnprotectedFiles">
  <!-- Copy unobfuscated file to  "unobfuscated file".unobfuscated -->
<Copy
    SourceFiles="@(ReactorFile)"
    DestinationFiles="@(ReactorFile -> '%(Filename)%(Extension)$(ReactorUnObfuscatedFileExt)"
    SkipUnchangedFiles="false"
/>
</Target>

不幸的是由于我缺乏MSBuild的经验,我做错了。 有人可以帮我纠正一下吗?

1 个答案:

答案 0 :(得分:1)

我已经弄明白了:

添加%(RelativeDir)项元数据是解决方案。

也许其他人会以此为例。 更正的片段是:

<Target Name="CopyUnprotectedFiles">
  <!-- Copy unobfuscated file to  "unobfuscated file".unobfuscated -->
<Copy
    SourceFiles="@(ReactorFile)"
    DestinationFiles="@(ReactorFile -> '%(RelativeDir)%(Filename)%(Extension)$(ReactorUnObfuscatedFileExt)')"
    SkipUnchangedFiles="false"
/>
</Target>