环境
问题背景
构建解决方案时,MS Build 会针对解决方案中的特定项目给出“GenerateDepsFile:
”错误。它会尝试在字典已经存在的情况下将其添加到字典中,但不会尝试将其添加到哪个字典或尝试使用哪个重复键。
进行勘探
obj
和 bin
文件夹答案 0 :(得分:1)
The "GenerateDepsFile" task failed unexpectedly
太大,您应该检查其详细的构建日志以判断真正的问题是什么。
在工具-->选项-->项目和解决方案下-->构建和运行- -> 将 MSBuild 项目构建输出详细程度 设置为 Detailed
,然后再次构建以获取其详细日志。
另外,您可以在此处与我们分享详细的错误构建日志。
也许您可以查看以下建议:
1) clean nuget caches 或只是删除 C:\Users\xxx\.nuget\packages
下的所有缓存文件。
2) 别忘了删除解决方案文件夹下的.vs
隐藏文件夹,项目的bin
,obj
文件夹,然后使用{{ 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 应该更新错误以至少指出哪个字典失败了,主消息中的特定键是什么,因为它很难用详细日志进行调试。