2016-11-16 89 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 '$([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'))" /> 

谢谢!

相关问题