【问题标题】:.NET Core solution build gives a GenerateDepsFile error.NET Core 解决方案构建给出了 GenerateDepsFile 错误
【发布时间】:2021-04-26 18:27:02
【问题描述】:

环境

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

问题背景

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

已进行探索

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

【问题讨论】:

  • 生成 .deps.json 失败。试试clean obj/bin/.vs folders
  • @magicandre1981 我已经尝试删除整个 bin 和 obj 文件夹,除了 VS 自己的 Clean 操作(如果这是拒绝投票的原因)
  • 我没有投反对票。将日志记录更改为详细/诊断以查看更多详细信息。

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


【解决方案1】:

The "GenerateDepsFile" task failed unexpectedly 太大,你应该查看它的详细构建日志来判断真正的问题。

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

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

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

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

2)不要忘记删除解决方案文件夹下的.vs隐藏文件夹,binobj项目文件夹,然后使用dotnet restore命令或msbuild -t:restore命令来恢复这些文件。

3) 将 VS2019 更新到最新的 16.8.4 并将您的 Net Core 3.1 Sdk 更新到 the latest 3.1.11

【讨论】:

  • 谢谢@perry。我终于通过深入研究项目参考来让它工作。但是,消息应包括添加到字典时违反了哪个键
【解决方案2】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2016-10-24
    • 2016-08-25
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    相关资源
    最近更新 更多