2016-11-16 8 views
0

Я пытаюсь изменить строку в партии. Замена строки отлично работает вне области пакетной обработки.msbuild batching replace string

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

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

Спасибо

+0

Очень запутанный синтаксис. Я попробовал это, но они пытаются решить немного другую проблему, и больше у меня нет понимания, чтобы понять, как это работает. Это не работает. Вызывает ошибки из msbuild \t

+0

Вы пробовали линию, которую я опубликовал в своем комментарии? Я уверен, что работает. – stijn

ответ

0

Лучший ответ был наконечник здесь https://stackoverflow.com/a/27865918/6840349

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

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

Спасибо!