MSBuild:如何找出将特定文件添加到 _CopyFilesMarkedCopyLocal 的位置?

MSBuild: How can you find out where a specific file is added to _CopyFilesMarkedCopyLocal?

当我构建一个特定项目时,在 _CopyFilesMarkedCopyLocal 任务期间,有一个不需要的文件被复制到 nuget 包的输出中。我无法从日志或项目参考搜索中确定为什么文件被标记为 CopyLocal。有什么记录可以帮助吗?或者是否有一个 属性 或项目组,我可以开始打印出调试消息来追踪它?

更多详情:

该文件是 Nuget 包的一部分,但在进行复制的项目中并未直接引用它。

进行复制的项目是大型复杂 .NET Framework 应用程序的一部分。该项目有 5 PackageReference 和 1 ProjectReferences。 ProjectReference 项目有一个额外的 17 PackageReferences 和 7 ProjectReferences 并且树继续前进。

NuGet 将生成包含引用的 obj\...nuget.g.props/.targets 文件。 这可以通过 Dependency asset attributes 控制 - 例如在 PackageReference.

上设置 ExcludeAssets="contentfiles"

使用二进制日志(将 -bl 添加到 msbuild/dotnet build 调用)并在 structured log viewer 中打开它可以在逻辑构建树和文件 /可以帮助找到这些文件的日志输出。