2016-11-16 8 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

+0

私のコメントに投稿した行を試しましたか?私はかなり動作していると確信しています。 – stijn

答えて

0

最良の答えは、他のすべての構文が動作していないようでしたここhttps://stackoverflow.com/a/27865918/6840349

先端ましたありがとうございました。後で実行する可能性のある作業例を示します。

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

ありがとうございました!