如何在“;环路”;是否使用MSBuild项组?
如何使用MSBuild ItemGroups在“循环”中执行CallTarget任务 我有一个以分号分隔的值的属性,我想为每个值调用一次target 目前,我已检查,msbuild正在自动拆分为Itemgroup中的多个项:如何在“;环路”;是否使用MSBuild项组?,msbuild,Msbuild,如何使用MSBuild ItemGroups在“循环”中执行CallTarget任务 我有一个以分号分隔的值的属性,我想为每个值调用一次target 目前,我已检查,msbuild正在自动拆分为Itemgroup中的多个项: <ItemGroup> <Version Include="$(Versions)" /> </ItemGroup> 然而,我在CallTarget任务中没有看到任何可能的属性 很遗憾,我无法将要运行的目标迁移到C#或power
<ItemGroup>
<Version Include="$(Versions)" />
</ItemGroup>
然而,我在CallTarget任务中没有看到任何可能的属性
很遗憾,我无法将要运行的目标迁移到C#或powershell。msbuild中的目标每次调用只执行一次。如果一个目标已经运行,那么额外的
任务不会执行任何操作-就像多个目标依赖于一个共享目标一样
虽然可以通过定义特定于元数据的输入
或输出
来使用,但对于不表示磁盘上项目的项目,这实际上不起作用
使用不同输入执行相同逻辑的方法是使用
任务执行“内部”构建,该构建使用不同参数执行同一目标的多个构建:
<ItemGroup>
<Version Include="1;2;3" />
</ItemGroup>
<MSBuild Projects="$(MSBuildProjectFile)" Targets="DoSthWithVersion" Properties="Version=%(Version.Identity)" />
…
<Target Name="DoSthWithVersion">
<Message Importance="high" Text="Version is: $(Version)" />
</Target>
…
请注意,您还需要传递在生成过程中生成/更改的任何其他属性,这些属性不是项目文件静态属性定义的一部分(即,仅在目标内部设置)
<ItemGroup>
<Version Include="1;2;3" />
</ItemGroup>
<MSBuild Projects="$(MSBuildProjectFile)" Targets="DoSthWithVersion" Properties="Version=%(Version.Identity)" />
…
<Target Name="DoSthWithVersion">
<Message Importance="high" Text="Version is: $(Version)" />
</Target>