私はあまりヤックを削ることなくこれを解決しました。
<?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>
これは私が好きなほど堅牢ではありません:明らかにMSBuildのは、そう、私のアプローチは.dependsファイルへの依存関係を書き込みカスタムターゲットをビルドをラップすることですビルド中に依存関係の情報を持っていますC++プロジェクトでは(ヘッダーとリンクライブラリの依存関係は含まれていませんが)、さらに強化される可能性があります。私はこれがC#にとって非常に堅実なアプローチだと考えています。参照されるアセンブリ、組み込みリソース、およびコンテンツが含まれています。