如何在 dotnet 核心 Web 项目在 IIS Express 中运行中跟踪失败的程序集绑定

问题描述

我正在努力寻找为什么某个程序集未加载到 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

enter image description here

但它似乎对运行 IIS express 的 Web 项目没有用..(日志状态 dotnet : 找不到要运行的项目。 在我开始我的项目时)

关于如何跟踪我失败的程序集绑定的任何建议将不胜感激!

解决方法

好吧,在谷歌上多一点毅力帮助了我......

事实证明,微软已经为我们提供了一个新的“dotnet-trace analysis utility”和大量关于 how to trace assembly loading 的文档。

使用它的步骤是:

  1. 使用 dotnet 工具安装 dotnet-trace 实用程序

PM> dotnet 工具安装 --global dotnet-trace

  1. 在 iis express 中识别您正在运行的应用程序的 pid

PM> dotnet-trace ps

  1. 开始跟踪:)

PM> dotnet-trace collect --providers Microsoft-Windows-DotNETRuntime:4 --process-id

  1. 最后使用 Github/microsoft/perfview 中的 perfview 工具打开 trace.nettrace 文件

我希望这些信息可以帮助其他人不要浪费太多时间在谷歌上搜索“如何在 dotnetcore 中使用 fuslogvw”:)