问题描述
我正在努力寻找为什么某个程序集未加载到 dotnetcore 3.1 网络项目中
(我得到 Could not load file or assembly 'MyCool.Services.Interfaces,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null'
)
如果这是一个 netFw 项目,我会简单地启动 Fuslogvw 并找到大量有关程序集绑定失败原因的信息。
也许我忽略了,但我还没有找到其他方法来为 dotnet 核心项目查找此类信息。
以前的帖子在这里问过,但没有答案: What's the replacement for fuslogvw in .net core 2?
我也已经遵循了这篇 SO 帖子的建议:Inspect dependencies for dynamically loaded library in .net core 并在包管理器控制台中设置 COREHOST_TRACE=1。
但它似乎对运行 IIS express 的 Web 项目没有用..(日志状态 dotnet : 找不到要运行的项目。 在我开始我的项目时)
关于如何跟踪我失败的程序集绑定的任何建议将不胜感激!
解决方法
好吧,在谷歌上多一点毅力帮助了我......
事实证明,微软已经为我们提供了一个新的“dotnet-trace analysis utility”和大量关于 how to trace assembly loading 的文档。
使用它的步骤是:
- 使用 dotnet 工具安装 dotnet-trace 实用程序
PM> dotnet 工具安装 --global dotnet-trace
- 在 iis express 中识别您正在运行的应用程序的 pid
PM> dotnet-trace ps
- 开始跟踪:)
PM> dotnet-trace collect --providers Microsoft-Windows-DotNETRuntime:4
--process-id
- 最后使用 Github/microsoft/perfview 中的 perfview 工具打开 trace.nettrace 文件
我希望这些信息可以帮助其他人不要浪费太多时间在谷歌上搜索“如何在 dotnetcore 中使用 fuslogvw”:)