检查.net核心中动态加载库的依赖关系

时间:2017-05-04 21:22:11

标签: c# reflection asp.net-core dependencies mimekit

我正在尝试创建使用外部dll-s中的一些函数的插件。 因为我不知道将使用哪个插件,我想动态加载:

  1. 主要的asp.net核心项目,使用反射动态加载mailservice.dll等插件。

  2. mailservice.dll库,它暴露了CheckMail()方法(我使用MimeKit作为IMAP助手)。

  3. 一切都很好,但是当我调用CheckMail()方法时,我收到 System.IO.FileNotFoundException:无法加载文件或程序集'MailKit,Version = 1.16.0.0 。 所以我把MimeKit的所有依赖项从发布版本中提取出来,但仍然没有(46个文件)。 当我使用nuget将MimeKit软件包安装到我的主asp.net项目时,一切运行正常,但显然我不想保持这种依赖。

    是否有任何工具或技术可以检查哪个文件丢失?

1 个答案:

答案 0 :(得分:0)

要从dotnet核心主机获取程序集探测路径,可以启用核心主机跟踪 如果从Visual Studio运行,请转到命令提示符和asp.net核心主解决方案的位置

首先使用此命令设置环境变量

set COREHOST_TRACE=1

之后使用 dotnet run 运行,您将获得完整的详细信息

要将输出重定向到文本文件,请使用redrection

dotnet run 2> log.txt

注意:你需要'2>'重定向为dotnet主机写入STDERR流而不是STDOUT。您的常规日志记录将是STDOUT。希望这有帮助