从<;MSBuild>;任务

从<;MSBuild>;任务,msbuild,task,Msbuild,Task,我有一个自定义的MSBuild项目文件,其中包含很少的。 我正在调用任务,我可以使用元素获取所有生成的程序集,并将@(OutputAssemblies)复制到目标目录 我希望能够从ResolveAssemblyReferences目标获取@(referenceCopylocalPath)项属性,但我不知道如何输出此属性 <Target Name="BuildDocumentationForReferencedProjects"> <MSBuild Projects=

我有一个自定义的MSBuild项目文件,其中包含很少的
。 我正在调用
任务,我可以使用
元素获取所有生成的程序集,并将@(OutputAssemblies)复制到目标目录

我希望能够从ResolveAssemblyReferences目标获取@(referenceCopylocalPath)项属性,但我不知道如何输出此属性

<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>

将以下自定义目标添加到您的项目文件中,或添加到您希望获得此行为的所有项目导入的文件中

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

然后,您可以直接调用此目标并捕获您感兴趣的项数组,因为此临时目标将其声明为其“返回”值



除了@(ReferenceCopyLocalPaths)之外,还有许多其他可能有趣的项数组,只需查看在ResolveAssemblyReferences目标(我的是第1400行)中为调用ResolveAssemblyReference任务声明的所有输出的Microsoft.Common.targets即可。

将以下自定义目标添加到项目文件中,或者到由所有项目导入的文件,您希望通过该文件获得此行为

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

然后,您可以直接调用此目标并捕获您感兴趣的项数组,因为此临时目标将其声明为其“返回”值



除了@(referencecopylocalpath)之外,还有许多其他项目数组可能很有趣,只需查看ResolveAssemblyReferences目标(我的是第1400行)中为调用ResolveAssemblyReference任务声明的所有输出的Microsoft.Common.targets即可。

我不知道您可以通过这种方式返回值。那是个好主意!看起来这是一个.NET4.0的东西。你知道如何使用.NET3.5实现这一点吗?我不知道你可以通过这种方式返回值。那是个好主意!看起来这是一个.NET4.0的东西。你知道如何使用.NET3.5实现这一点吗?