Visual Studio .NET Core解决方案生成时出现GenerateDepsFile错误

ikfrs5lh  于 2023-06-06  发布在  .NET
关注(0)|答案(3)|浏览(384)

环境

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

当生成解决方案时,MS Build会为解决方案中的特定项目提供“GenerateDepsFile:”错误。当一个条目已经存在时,它会尝试将其添加到字典中,但不会尝试添加哪个字典或尝试添加哪个重复键。

执行的探索

  • 没有编译错误(除了Deps文件)
  • 所有引用的项目都在正常生成,本身没有错误
  • 所有NuGet参考均可用,无错误
  • 清理和重建所有涉及的解决方案
  • 跨代码库手动删除objbin文件夹
gmol1639

gmol16391#

The "GenerateDepsFile" task failed unexpectedly太大,您应该检查其详细的构建日志以判断真实的的问题是什么。
在【工具】-->【选项】-->【项目和解决方案】-->【构建和运行】-->将【MSBuild项目构建输出详细程度】设置为Detailed,然后再次构建,获取其详细日志。

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


**1)**清理nuget缓存或删除C:\Users\xxx\.nuget\packages下的所有缓存文件。
**2)**不要忘记删除项目的解决方案文件夹下的.vs隐藏文件夹、binobj文件夹,然后使用dotnet restore命令或msbuild -t:restore命令恢复这些文件。
**3)**将VS 2019更新为最新的16.8.4,将Net Core 3.1 Sdk更新为the latest 3.1.11

bq3bfh9z

bq3bfh9z2#

经过大量的探索,它看起来像一个多版本的NuGet包场景(已经清理了NuGet缓存)
最后,我去了所有的子项目,并验证了所有NuGet包的相同版本是否被使用。结果发现,一些程序集(特别是Microsoft.Data.SqlClient)的版本在子项目和调用项目中是不同的。由于项目本身的构建都很好,所以在项目级别上没有报告这一点,但是当这些DLL在父DLL中被使用时,它开始给出错误。
原来这些子项目是用当时可用的最新版本构建的。父项目只是从输出文件夹引用DLL,不知道以前的版本,并更新了自己的版本。
因此,请确保当特定版本的NuGet在一个地方获得批准时,它会在整个生态系统中更新!
然而,MS应该更新错误,至少指出主消息中的哪个字典失败了,因为很难用详细日志进行调试。

eblbsuwk

eblbsuwk3#

“GenerateDepsFile”任务意外失败。
我相信你只需要删除bin和obj文件夹,然后清理和重建解决方案。
这应该可行,在经历了许多方法后,它对我有效。

编辑:

这对我也很有效,而清洁解决方案却没有。请采取您的bin和obj文件夹的备份,然后再删除它们,因为有罕见的情况下,这可能会适得其反,你和成本你很多的工作。

相关问题