【问题标题】:How to dynamically load correct version of 3rd party unmanaged control in c#如何在 C# 中动态加载正确版本的 3rd 方非托管控件
【发布时间】:2016-09-20 01:36:45
【问题描述】:

我的应用是第三方非托管应用的 c# 插件。我有一个 Windows 窗体,其中一个控件(AxInterop)依赖于它们的一个非托管 dll。它们的 2015 版相同控件依赖于不同的类型库文件(例如 abc.tlb 现在是 123.tlb),但它们都支持相同的接口。

我不想创建单独的构建。

如何让我的代码在早期版本中使用 ABC.tlb 而在 2015 版本中使用 123.tlb?

你能在启动时像程序集一样加载 tlb 文件吗?

谢谢

【问题讨论】:

  • 这毫无意义。 .tlb 文件是在编译时使用的类型库。因此,您必须使用新的类型库引用重新编译您的应用程序。
  • 我之前使用过动态和反射,因此我不必引用此控件使用的相同 dll。现在这里的不同之处在于我正在使用引用 dll 的控件,并且我正在寻找一种方法来让它找到 2015 年的新 dll。所以也许认为我需要加载一个不同的 tlb 我只需要加载启动时的那个新dll。这有意义吗?

标签: c# load version unmanaged tlb


【解决方案1】:

好的,毕竟使用动力学解决了它。 AxInterop 控件是一个红鲱鱼。该控件的属性是 2015 年更改的类型。我使用动态从第三方的工作区对象中获取该属性,然后将该属性设置为该值。我的项目没有引用 ABC 或 123。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    • 2010-12-23
    相关资源
    最近更新 更多