msbuild пакетная замена строки

Я пытаюсь изменить строку в пакете. Замена строки прекрасно работает вне рамок пакетирования.

В моем примере я пытаюсь заменить часть каталога.

    <?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>

Спасибо

1 ответ

Лучший ответ был совет здесь /questions/21278892/v-msbuild-ya-mogu-ispolzovat-funktsiyu-stringreplace-dlya-elementa-metadata/21278915#21278915

Весь другой синтаксис, похоже, не работает. Вот мой рабочий пример для тех, кто может последовать позже:

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

Спасибо!

Другие вопросы по тегам