MsBuild能否输出类似于makeDependent的依赖项信息?

MsBuild能否输出类似于makeDependent的依赖项信息?,msbuild,dependencies,Msbuild,Dependencies,是否有方法强制MsBuild以类似的结构化形式输出目标依赖项信息?我需要在解决方案中包含C++和C++项目的解决方案。我对输出格式不挑剔 我认为可以通过处理.csproj文件和构建DAG来确定C#依赖关系。同样,我可以在C++源上运行一个开源的代码>代码> Audiase,然后从那里开始。我真的不想在这里玩我自己的——这似乎是MsBuild应该能够做的事情,即使是出于诊断目的。我解决了这个问题,没有太多的牦牛剃须。显然,MsBuild在生成过程中确实具有依赖项信息,因此我的方法是使用将依赖项写入

是否有方法强制MsBuild以类似的结构化形式输出目标依赖项信息?我需要在解决方案中包含C++和C++项目的解决方案。我对输出格式不挑剔


我认为可以通过处理.csproj文件和构建DAG来确定C#依赖关系。同样,我可以在C++源上运行一个开源的代码>代码> Audiase<代码>,然后从那里开始。我真的不想在这里玩我自己的——这似乎是MsBuild应该能够做的事情,即使是出于诊断目的。

我解决了这个问题,没有太多的牦牛剃须。显然,MsBuild在生成过程中确实具有依赖项信息,因此我的方法是使用将依赖项写入.dependens文件的自定义目标包装生成:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <!-- Write project dependencies to a .depends file, one line per dependency -->
  <Target Name="OutputProjectDependencies">
    <Delete Files="$(OutputPath)\$(TargetFileName).depends"/>
    <WriteLinesToFile File="$(OutputPath)\$(TargetFileName).depends" 
      Lines="@(CscDependencies->'%(FullPath)');@(ReferencePath->'%(FullPath)');@(Content->'%(FullPath)');@(_NoneWithTargetPath->'%(FullPath)')"
      Overwrite="false"
      Encoding="UTF-8"/>
    <WriteLinesToFile File="$(OutputPath)\$(TargetFileName).depends" 
      Lines="@(ClDependencies->'%(FullPath)')"
      Overwrite="false"
      Encoding="UTF-8"/>
  </Target>

  <ItemGroup>
    <CscDependencies Include="@(Compile);@(EmbeddedResource)"/>
    <ClDependencies Include="@(ClCompile);@(ClInclude)"/>
  </ItemGroup>

  <PropertyGroup>
    <BuildDependsOn>
      $(BuildDependsOn);
      OutputProjectDependencies;
    </BuildDependsOn>
  </PropertyGroup>

</Project>

$(BuildDependsOn);
OutputProjectDependencies;

<>这并不像我所喜欢的C++项目那样健壮(它缺少包含的头和链接库依赖),但可能会进一步增强。我相信这是一个非常可靠的C#方法——它包括引用的程序集、嵌入的资源和内容。

我解决了这个问题,没有做太多的改动。显然,MsBuild在生成过程中确实具有依赖项信息,因此我的方法是使用将依赖项写入.dependens文件的自定义目标包装生成:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <!-- Write project dependencies to a .depends file, one line per dependency -->
  <Target Name="OutputProjectDependencies">
    <Delete Files="$(OutputPath)\$(TargetFileName).depends"/>
    <WriteLinesToFile File="$(OutputPath)\$(TargetFileName).depends" 
      Lines="@(CscDependencies->'%(FullPath)');@(ReferencePath->'%(FullPath)');@(Content->'%(FullPath)');@(_NoneWithTargetPath->'%(FullPath)')"
      Overwrite="false"
      Encoding="UTF-8"/>
    <WriteLinesToFile File="$(OutputPath)\$(TargetFileName).depends" 
      Lines="@(ClDependencies->'%(FullPath)')"
      Overwrite="false"
      Encoding="UTF-8"/>
  </Target>

  <ItemGroup>
    <CscDependencies Include="@(Compile);@(EmbeddedResource)"/>
    <ClDependencies Include="@(ClCompile);@(ClInclude)"/>
  </ItemGroup>

  <PropertyGroup>
    <BuildDependsOn>
      $(BuildDependsOn);
      OutputProjectDependencies;
    </BuildDependsOn>
  </PropertyGroup>

</Project>

$(BuildDependsOn);
OutputProjectDependencies;
<>这并不像我所喜欢的C++项目那样健壮(它缺少包含的头和链接库依赖),但可能会进一步增强。我相信这是一种非常可靠的C#方法——它包括引用的程序集、嵌入式资源和内容