MsBuild(命令行或库)可以创建引用文件列表吗?

时间:2015-08-06 06:10:52

标签: .net msbuild

作为构建复杂系统的一部分,我想知道哪些文件是作为.net项目文件构建的一部分引用的。从理论上讲,这可以从XML中读取,但是一旦开始考虑属性和条件节点,这是一项非常重要的任务。

gcc -MM可以为您提供c头文件列表的方式相同,有没有办法从MsBuild获取已解析的引用(项目和dll)列表?从命令行是理想的,但通过MsBuild库也是可能的。

1 个答案:

答案 0 :(得分:1)

事实证明,可以使用MsBuild公共目标和包装器项目来完成。

创建一个这样的文件:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="WriteStuff" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(TargetProject)"/>
  <Target Name="WriteStuff" DependsOnTargets="ResolveReferences">
    <Message Importance="high" Text="References::@(ReferencePath)"/>
    <Message Importance="high" Text="Compiles::@(BeforeCompile);@(Compile);@(AfterCompile)"/>
    <Message Importance="high" Text="Output::$(OutputPath)"/>
  </Target>
</Project>

使用MsBuild构建它并设置“/p:TargetProject=yourproject.proj”属性。

它将输出所有引用的dll,编译文件和输出目录的列表。

http://blog.mavnn.co.uk/extracting-information-from-msbuild/

还有一些细节