是否可以将动态属性组传递给MSbuild任务?所以,如果我有以下属性和值:
<MyPropertyGroup>
<Foo>bar</Foo>
<Foo1>bar1</Foo1>
<Foo2>bar2</Foo2>
</MyPropertyGroup>
我可以使用短的属性列表调用MSBuild:
<MSBuild Projects="$(SolutionFile)" Targets="Build" Properties="MyPropertyGroup" />
但这与调用这样的任务是一样的:
<MSBuild Projects="$(SolutionFile)" Targets="Build" Properties="Foo=bar;Foo1=bar1;Foo2=bar2" />
如果有大型属性列表,则此选项很有用,并且只允许维护1个位置。
答案 0 :(得分:1)
这里有两个问题:
<PropertyGroup>
元素仅用于定义属性。评估之后,所有属性都只是一个没有任何分组的键值对列表,所以即使<PropertyGroup Label="my groups">
也不会影响它所包含的属性。您问题的最实用的解决方案是定义包含所有值的单个属性:
<PropertyGroup>
<BuildParameters>
Configuration=Debug;
Platform=Any CPU;
SomeOtherProperty=Foo
</BuildParameters>
</PropertyGroup>
…
<PropertyGroup>
<!-- this property can even be extended afterwards, e.g. when a condition is needed -->
<BuildParameters Condition=" '$(ShallAppendThings)' == 'true' ">
$(BuildParameters);
AnotherProperty=SomeValue
</BuildParameters>
</PropertyGroup>
…
<MSBuild Projects="$(SolutionFile)" Targets="Build" Properties="$(BuildProperties)" />