首页 > 解决方案 > MSBuild:如何找出特定文件添加到 _CopyFilesMarkedCopyLocal 的位置?

问题描述

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

更多细节:

该文件是 Nuget 包的一部分,但不会在发生复制的项目中直接引用。

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

标签: msbuildnugetcsprojnuget-package-restore

解决方案


NuGet 将生成包含引用的obj\...nuget.g.props/文件。.targets这可以通过依赖资产属性来控制- 例如ExcludeAssets="contentfiles"PackageReference.

使用二进制日志(添加-bl到 msbuild/dotnet build调用)并在结构化日志查看器中打开它可以在逻辑构建树和文件/日志输出中提供很好的搜索选项,这可以帮助找到这些文件。


推荐阅读