.net 如何找到引用了缺失包的项目的nuget包

nxagd54h  于 2023-08-08  发布在  .NET
关注(0)|答案(1)|浏览(127)

我有一个项目ABC,它没有直接引用AssemblyNameXyz包,但在运行应用程序ABC时,我看到错误Could not load file or assembly 'AssemblyNameXyz, Version=4.0.0.142 ...' - The system cannot find the file specified.
我如何知道我的项目中哪个已安装的包可能引用了在运行时未找到的此包?

yvt65v4c

yvt65v4c1#

在Bash终端的nuget软件包文件夹(~/.nuget/packages)中,运行命令find . -name "*.nuspec" -exec grep "VERSION_NUMBER" {} +
“VERSION_NUMBER”是异常/错误指示的版本,例如根据问题,它的4.0.0.142

$ find . -name "*.nuspec" -exec grep "4.0.0.142" {} +
./AssemblyNamePqr/2021.1.0.27/AssemblyNamePqr.nuspec:        <dependency id="AssemblyNameXyz" version="4.0.0.142" exclude="Build,Analyzers" />

字符串
结果表明:AssemblyNamePqr表示偏离/缺失的依赖关系。
注记
1.如果在与发生问题的环境不同的环境中重现问题,请确保清除nuget缓存。

详细信息

NU1605可能被忽略,这防止了从https://learn.microsoft.com/en-us/nuget/concepts/dependency-resolution#direct-dependency-wins等方案中断
安装到项目的“直接”nuget包可能缺少(“间接包”)依赖项。因为.Net会延迟加载程序集(参考:https://michaelscodingspot.com/assemblies-load-in-dotnet/-官方MS链接?)问题在运行时被捕获,并出现如上所示的错误。

相关问题