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'))" />
Спасибо!