5

我正在实施一个 MSBuild 框架,以推动构建和部署许多按层次结构组织的项目。

<Target Name="_CoreBuild">
  <MSBuild Projects="@(Project)" Targets="Build" Properties="Configuration=$(Configuration)">
    <Output TaskParameter="TargetOutputs" ItemName="CompiledAssemblies" />
  </MSBuild>
</Target>

为了实现正确的 Clean/Clobber 逻辑,如果使用当前选项执行构建,我想检索将被编译的文件列表。

<Target Name="_CoreClobber" DependsOnTargets="_CoreClean">
   <!-- How to retrieve @(CompiledAssemblies) as if we were
        building @(Project) and retrieving the @(TargetOutputs) item group.
     -->
</Target>

我尝试了各种方法,包括创建自定义任务,在其中我构建了一个自定义项目文件,该文件导入了我想要从中检索属性/项目的原始项目。但这并没有给我可靠的价值。

有没有办法在不实际执行构建的情况下检索 MSBuild 项目的 TargetOutputs 项组?

4

1 回答 1

6

没关系。

我偶然发现了以下类似的问题,并认为我必须使用GetTargetPath目标,如下所示:

<Target Name="_CoreBuild">
  <MSBuild Projects="@(Project)" Targets="GetTargetPath" Properties="Configuration=$(Configuration)">
    <Output TaskParameter="TargetOutputs" ItemName="CompiledAssemblies" />
  </MSBuild>
</Target>
于 2011-10-20T14:59:40.823 回答