.NET Core 解决方案构建给出 GenerateDepsFile 错误

时间:2021-01-22 09:34:54

标签: visual-studio .net-core msbuild nuget

环境

  • Visual Studio 2019(最新 SP 到 2020 年 12 月)
  • 2020 年 12 月之前带有最新 SP 的 .NET Core 3.1
  • 在运行时加载了大量子 DLL 的 WebAPI 项目

问题背景

构建解决方案时,MS Build 会针对解决方案中的特定项目给出“GenerateDepsFile:”错误。它会尝试在字典已经存在的情况下将其添加到字典中,但不会尝试将其添加到哪个字典或尝试使用哪个重复键。

进行勘探

  • 没有编译错误(Deps 文件除外)
  • 所有引用的项目都构建良好,本身没有错误
  • 所有 NuGet 引用都可用且无错误
  • 清理并重建所有涉及的解决方案
  • 手动删除代码库中的 objbin 文件夹

2 个答案:

答案 0 :(得分:1)

The "GenerateDepsFile" task failed unexpectedly 太大,您应该检查其详细的构建日志以判断真正的问题是什么。

工具-->选项-->项目和解决方案下-->构建和运行- -> 将 MSBuild 项目构建输出详细程度 设置为 Detailed,然后再次构建以获取其详细日志。

另外,您可以在此处与我们分享详细的错误构建日志。

也许您可以查看以下建议:

1) clean nuget caches 或只是删除 C:\Users\xxx\.nuget\packages 下的所有缓存文件。

2) 别忘了删除解决方案文件夹下的.vs隐藏文件夹,项目的binobj文件夹,然后使用{{ 1}} 命令或 dotnet restore 命令来恢复这些文件。

3) 将 VS2019 更新到最新的 msbuild -t:restore 并将您的 Net Core 3.1 Sdk 更新到 the latest 3.1.11

答案 1 :(得分:1)

经过大量探索,看起来像一个多版本的 NuGet 包场景(已经清理了 NuGet 缓存)

最后,我访问了所有子项目,并验证是否正在使用所有 NuGet 包的相同版本。事实证明,子项目和调用项目中某些程序集(尤其是 Microsoft.Data.SqlClient)的版本不同。 由于项目本身的构建一切正常,因此没有在项目级别报告,但是当这些 DLL 在父级中被消耗时,它开始给出错误。

事实证明,子项目是用当时可用的最新版本构建的。父项目只是引用输出文件夹中的 DLL,不知道以前的版本,并更新了自己的版本..

因此,请确保在一个地方批准特定版本的 NuGet 后,该版本会在整个生态系统中得到更新!

但是,MS 应该更新错误以至少指出哪个字典失败了,主消息中的特定键是什么,因为它很难用详细日志进行调试。