1

我正在尝试更改批处理中的字符串。替换字符串在批处理范围之外非常有用。

在我的示例中,我试图替换部分目录。

    <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="Build">
     <PropertyGroup>
        <SourcePath>C:\LocTest</SourcePath>
     </PropertyGroup>
    <ItemGroup>
      <RelBinfolder Include="$(SourcePath)\one\**\*;$(SourcePath)\tweo\**\*;$(SourcePath)\three\**\*">
      </RelBinfolder>
    </ItemGroup>
    <Message Text="Directory: %(RelBinfolder.Directory)" />
    <Message Text="Batching does not work: %(RelBinfolder.Directory.Replace('LocTest', 'SomethingNew'))" />
    <Message Text="This works fine: $(SourcePath.Replace('LocTest', 'SomethingNew'))" />
    </Target>
</Project>

谢谢

4

1 回答 1

0

最好的答案是这里的提示https://stackoverflow.com/a/27865918/6840349

所有其他语法似乎都不起作用。这是我以后可能会遵循的工作示例:

<Message Text="Adapted: $([System.String]::Copy('%(RelBinfolder.RecursiveDir)').Replace('tweo', 'two'))" />

谢谢!

于 2016-11-18T16:26:24.000 回答