我有几个自定义MSBuild项目文件<ProjectReferences>.我正在调用<MSBuild Projects="@(ProjectReference)" Targets="Build">任务,我可以使用该<Output TaskParameter="TargetOutputs" ItemName="OutputAssemblies" />元素获取所有构建的程序集,并且我将@(OutputAssemblies)复制到目标目录.
我希望能够从ResolveAssemblyReferences目标获取@(ReferenceCopyLocalPaths)项属性,但我无法弄清楚如何输出此属性.
<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>
Run Code Online (Sandbox Code Playgroud)
将以下自定义目标添加到项目文件中,或者添加到要获得此行为的所有项目导入的文件中...
<Target Name="MyResolveReferences"
DependsOnTargets="ResolveReferences"
Returns="@(ReferenceCopyLocalPaths)">
</Target>
Run Code Online (Sandbox Code Playgroud)
然后,您可以直接调用此目标并捕获您感兴趣的项目数组,因为此暂时目标将其声明为其"返回"值,
<Target Name="BuildDocumentationForReferencedProjects">
<MSBuild
Projects="@(ProjectReference)"
Targets="MyResolveReferences"
...
>
<Output
TaskParameter="TargetOutputs"
ItemName="MyReferenceCopyLocalPaths"
/>
</MSBuild>
<Message Text="Paths = '@(MyReferenceCopyLocalPaths)'" />
</Target>
Run Code Online (Sandbox Code Playgroud)
除了@(ReferenceCopyLocalPaths)之外,还有许多其他项目数组可能很有意思,只需在为ResolveAssemblyReferences目标调用ResolveAssemblyReference任务而声明的所有输出中查看Microsoft.Common.targets(我的是~1400行) ).
| 归档时间: |
|
| 查看次数: |
1974 次 |
| 最近记录: |