在运行时加载COM dll?

Yoe*_*fen 5 .net c# com-interop

我正在编写Peachtree API的应用程序,它需要使用任何版本的API.不幸的是,Peachtree 2011的dll无法与Peachtree 2010交互,反之亦然,即使两个dll存储在同一位置并使用完全相同的代码运行.

我以为我应该能够通过它的文件路径引用dll,将特定版本保留为false,将interop类型嵌入为false,并将本地复制为false,它只会使用机器所具有的任何版本,但是我得到一个错误我这样做 - "调用的目标引发了异常."

有没有办法尽快绑定dll,即使它是COM?

我可以提供您认为有用的代码示例,但它更多的是项目设置问题而不是任何问题.

编辑:非常感谢你们的帮助.我在另一个人的问题上找到了我的解决方案并在此处发布.

小智 7

延迟绑定到COM对象要求您不要将COM库的引用添加到.NET项目中.相反,你应该使用这样的东西来创建COM对象:

   Type type = Type.GetTypeFromProgID("Excel.Application")
   object app = Activator.CreateInstance(type);
Run Code Online (Sandbox Code Playgroud)

然后,它将在运行时绑定到任何版本的COM库.

有关详细信息,请参阅此文章.