Вернуть ReferenceCopyLocalPaths из задачи <MSBuild> - PullRequest
1 голос
/ 28 мая 2011

У меня есть пользовательский файл проекта MSBuild с несколькими <ProjectReferences>. Я вызываю задачу <MSBuild Projects="@(ProjectReference)" Targets="Build">, и я могу получить все встроенные сборки с помощью элемента <Output TaskParameter="TargetOutputs" ItemName="OutputAssemblies" />, и я копирую @ (OutputAssemblies) в каталог назначения.

Я хочу получить свойство элемента @ (ReferenceCopyLocalPaths) из цели ResolveAssemblyReferences, но не могу понять, как вывести это свойство.

<Target Name="BuildDocumentationForReferencedProjects">
  <MSBuild
    Projects="@(ProjectReference)"
    Targets="Build"
    BuildInParallel="true"
    Properties="DocumentationFile=$(DllDir)\%(FileName).xml"
  >
    <Output TaskParameter="TargetOutputs" ItemName="OutputAssemblies" />
  </MSBuild>

  <Copy SourceFiles="@(OutputAssemblies)" DestinationFolder="$(DllDir)" />
</Target>

1 Ответ

6 голосов
/ 30 мая 2011

Добавьте следующую настраиваемую цель в файл проекта или в файл, импортированный всеми проектами, с которыми вы хотите получить это поведение ...

  <Target Name="MyResolveReferences"
    DependsOnTargets="ResolveReferences"
    Returns="@(ReferenceCopyLocalPaths)">
  </Target>

Затем вы можете вызвать эту цель напрямую и записатьинтересующий вас массив элементов, так как эта временная цель объявляет его как значение «Returns»,

  <Target Name="BuildDocumentationForReferencedProjects">
   <MSBuild
     Projects="@(ProjectReference)"
     Targets="MyResolveReferences"
     ...
     >
     <Output
        TaskParameter="TargetOutputs"
        ItemName="MyReferenceCopyLocalPaths"
        />
   </MSBuild>
   <Message Text="Paths = '@(MyReferenceCopyLocalPaths)'" />
  </Target>

В дополнение к @ (ReferenceCopyLocalPaths) существует ряд других массивов элементов, которые могут быть интересны,просто посмотрите в Microsoft.Common.targets все выходы, объявленные для вызова задачи ResolveAssemblyReference в цели ResolveAssemblyReferences (у меня ~ строка 1400).

...