【问题标题】:Difference between how Visual studio loads assemblies and Assembly.LoadFrom?Visual Studio 如何加载程序集和 Assembly.LoadFrom 之间的区别?
【发布时间】:2017-06-08 01:29:07
【问题描述】:

我有一个程序集(实际上是 2 个)都来自 SAP 目录 C:\Program Files (x86)\SAP\FrontEnd\SAPgui

  • Visual Studio Add Reference - 工作正常。
  • Assembly.LoadFrom - 下面抛出异常。

无法加载文件或程序集 'file:///C:\Program Files (x86)\SAP\FrontEnd\SAPgui\sapfewse.ocx' 或其依赖项之一。该模块应包含程序集清单。

为什么我可以添加对visual studio的引用并使用dll没有问题,但是通过反射加载它不起作用?

有没有办法在运行时加载程序集类型?

【问题讨论】:

  • 这些 dll 通过 COM 使用,但 Assembly.LoadFrom 仅适用于 .NET 程序集。 COMReference 仅包括接口。也许您应该解释一下为什么要尝试动态加载这些内容。
  • 我们使用的程序只允许服务器上的 GAC 程序集,我们需要访问客户端计算机上的程序集。此外,如果我们仍然尝试将程序集添加到 GAC,则会出现相同的错误。
  • 嗯,这些是本地库,因此您不需要将它们包含在 GAC 中。我认为您甚至不必将它们与您自己的程序集一起分发(您正在嵌入互操作类型),但我在这里可能错了。只要确保 SAP 的东西安装在客户端机器上。
  • 这很有帮助,谢谢。它为我连接了一些点。

标签: c# reflection


【解决方案1】:

正如 Lucas 在 cmets 中指出的那样,Assembly.LoadFrom 仅适用于 .NET 程序集,而我尝试加载的程序集是 COM dll。

我最终要做的就是将它们添加到一个项目中,该项目生成 dll 的互操作版本,然后我将其添加到 GAC,以便我们最初想要使用它的程序可以访问它。

感谢所有在 cmets 中发帖并引导我找到此解决方案的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 2014-10-03
    • 2010-10-15
    • 2013-03-15
    • 2019-01-20
    • 1970-01-01
    相关资源
    最近更新 更多