MSBuild-将项目文件的特定属性传递给目标以运行

时间:2018-08-10 22:22:41

标签: msbuild msbuild-task

我想为每个输入并行执行一个目标。为此,我正在创建一个项目组,其中包括要运行的项目路径(在本例中为相同项目)以及从输入中创建的属性。然后,我想为每个输入运行一个特定的目标。我可以调用目标输入大小的次数,但是无法将输入的属性一直传递到需要运行的目标。在这种情况下就是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" />

0 个答案:

没有答案