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

.NET Core solution build gives a GenerateDepsFile error

环境

问题背景

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

已进行探索

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

工具-->选项-->项目和解决方案--> Build and 运行--> 将 MSBuild project build output verbosity 设置为 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.

摸索了很久,好像是多版本的NuGet包场景(已经清理了NuGet缓存)

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

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

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

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

The "GenerateDepsFile" task failed unexpectedly.

我相信您只需要删除 bin 和 obj 文件夹,然后清理并重建解决方案。

这应该有用,在经历了很多方法后对我有用。