0

ここに簡単なテストプロジェクトがあります

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0" DefaultTargets="configure">
    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
    <PropertyGroup>
        <param>var1=val1,var2=val2</param>
    </PropertyGroup>
    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
    <Target Name="configure" DependsOnTargets="" Outputs="">
        <MSBuild
            Projects="$(MSBuildProjectFullPath)"
            Properties="component=c1;$(param.Replace(',',';'))"
            Targets="process"/>
    </Target>
    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
    <Target Name="process">
        <Message Text="[$(component)][$(var1)][$(var2)]"/>
    </Target>
</Project>

私は見ることを期待しています

[c1][val1][val2]

残念ながら、msbuild は文字列と出力から追加のプロパティを解析しません。

[c1][val1;var2=val2][]

msbuild を支援する方法はありますか? ありがとう

解決策: [MSBuild]::Unescape を使用します。

<PropertyGroup>
    <p>var1=val1,var2=val2</p>
    <param>$([MSBuild]::Unescape($(p.Replace(',',';'))))</param>
</PropertyGroup>
4

1 に答える 1