我想为每个输入并行执行一个目标。为此,我正在创建一个项目组,其中包括要运行的项目路径(在本例中为相同项目)以及从输入中创建的属性。然后,我想为每个输入运行一个特定的目标。我可以调用目标输入大小的次数,但是无法将输入的属性一直传递到需要运行的目标。在这种情况下就是RunGenPackage。当我尝试输出$(PackagesName)时,我得到一个空字符串。
如何将此输入一直传递到RunGenPackage?由于每个输入都有不同的程序包名称,因此我不能直接作为msbuild的Properties参数传递。
<Target Name="PackageManifests" AfterTargets="GeneratePackages" Inputs="@(ProcessedPackagesManifests)" Outputs="$(IntermediateOutputPath)Packages\%(ProcessedPackagesManifests.PackagesName).package">
<ItemGroup>
<BuildFiles Include="$(MSBuildThisFileFullPath)">
<Properties>PackagesName=%(ProcessedPackagesManifests.PackagesName)</Properties>
</BuildFiles>
</ItemGroup>
</Target>
<Target Name="RunParallel" AfterTargets="PackageManifests">
<Message Text="Start" Importance="High" />
<Message Text="Inside RunParallel" Importance="High" />
<Message Text="Count = @(BuildFiles->Count())" Importance="High" />
<MSBuild BuildInParallel="true" Projects= "@(BuildFiles)" Targets="RunGenPackage"/>
<Message Text="End" Importance="High" />
</Target>
<Target Name="RunGenPackage">
<Message Text="Inside RunGenPackage" Importance="High" />
<Message Text="Generating package for Name: $(PackagesName)" Importance="High" />