如何使用msbuild在多个属性文件中构建解决方案列表?

时间:2011-12-18 07:03:32

标签: .net msbuild msbuild-4.0

我有以下Msbuild属性文件列表。

C:\构建\ Mainscript \ Master.targets

C:\构建\ Mainscript \ Master.properties

C:\构建\的Component1 \ build.comp1.properties

C:\构建\ COMPONENT2 \ build.comp2.properties

         .
         .

C:\建立\ Component3 \ build.compn.properties

Component1.properties包含以下解决方案列表

<Solution Include="C:\build\Component1\Mysoltuion.sln;">
      <Group>Firstcomp</Group>
      <AdditionalProperties>
        ValidateXaml=false;
        ReferencePath=$(DefaultReference);
      </AdditionalProperties>
      <IsRebuild>False</IsRebuild>
    </Solution>   

Component2.properties包含以下解决方案列表

<Solution Include="C:\build\Component2\Mysoltuion.sln;">
      <Group>Firstcomp</Group>
      <AdditionalProperties>
        ValidateXaml=false;
        ReferencePath=$(DefaultReference);
      </AdditionalProperties>
      <IsRebuild>False</IsRebuild>
    </Solution>   

Master.properties将具有所有组件的公共属性。

<Components Include="C:\Build\Comp1\Build.comp1.properties">
      <ComponentName>Comp1</ComponentName>
    </Components>

    <Components Include="C:\Build.CompN.Properties">
      <ComponentName>CompN</ComponentName>
    </Components>

我有一个目标如下,这有助于我构建所有组件

  <Target Name="BuildAll" Inputs="@(Components)" Outputs="%(Identity).Dummy">

    <MSBuild Projects="@(Components)"

             Targets="BuildComponent" />

  </Target>

我想在大多数时间单独构建一些特定的组件。如何单独传递特定组件。

1 个答案:

答案 0 :(得分:0)

在此处查看您的类似问题的答案:
How to pass items one by one to another msbuild task?

基本上,您可以访问ItemGroup中每个项目的自定义元数据,如下所示:

<Target Name="BuildAll" Inputs="@(Components)" Outputs="%(Identity).Dummy">
    <MSBuild Projects="%(Identity)" 
             Targets="%(ComponentName)" />
</Target>