ここに簡単なテストプロジェクトがあります
<?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>