2016-11-16 10 views
0

일괄 처리에서 문자열을 변경하려고합니다. 문자열 바꾸기는 일괄 처리 범위 밖에서 효과적입니다.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> 

+0

매우 혼동스러운 구문입니다. 그 중 하나를 시도했지만 그들은 약간 다른 문제를 해결하려고 시도하고 그 해결책의 더 많은 것들이 어떻게 작동하는지 이해할 수 없습니다. 이것은 작동하지 않습니다. msbuild에서 오류가 발생했습니다. \t <메시지 텍스트 = "일괄 작업이 작동하지 않습니다 .2 : @ (RelBinfolder -> '$ ([System.String] :: Replace (" % (RelBinfolder.Directory))"" SomethingNew "))) –

+0

내 의견에 게시 된 라인을 사용해 보셨습니까? 나는 그 일이 꽤 확실하다. – stijn

답변

0

가장 좋은 대답은 다른 모든 구문이 작동하지 않았다 여기 https://stackoverflow.com/a/27865918/6840349

팁이었다 감사드립니다. 나중에 따르는 사람들을위한 제 작업 예제가 있습니다 :

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

고마워요!