Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 加载不同的COM库版本_C#_Visual Studio_Dll_Com - Fatal编程技术网

C# 加载不同的COM库版本

C# 加载不同的COM库版本,c#,visual-studio,dll,com,C#,Visual Studio,Dll,Com,我正在使用C#并编写了一个与Corel Draw交互的程序。Corel Draw提供了一个COM库。在开发过程中,我使用了版本18.1(这是我安装的Corel Draw版本中的COM库)。我想在另一台安装了不同Corel Draw版本的计算机上测试我的程序,因此程序失败。但是,当我更改对更新版本COM库的引用时,它工作得很好,所以看起来,库是相同的 我的项目只使用了两个引用,但我看到Corel Draw还提供了一个包含这两个DLL的.tlb文件 如何在Corel Draw的每个版本(或多个版本)

我正在使用C#并编写了一个与Corel Draw交互的程序。Corel Draw提供了一个COM库。在开发过程中,我使用了版本18.1(这是我安装的Corel Draw版本中的COM库)。我想在另一台安装了不同Corel Draw版本的计算机上测试我的程序,因此程序失败。但是,当我更改对更新版本COM库的引用时,它工作得很好,所以看起来,库是相同的

我的项目只使用了两个引用,但我看到Corel Draw还提供了一个包含这两个DLL的.tlb文件


如何在Corel Draw的每个版本(或多个版本)上运行程序

通常,COM dll应该使用相同的CLSID(类ID),并且应该可以工作,与安装的版本无关。失败时会出现什么错误?这是德语:这是完全正常的,使用错误[AssemblyVersion]的.NET库也会发生同样的情况。与在.NET中使用的方法相同,使用反射。从项目的“引用”节点中删除类型库引用。对对象变量使用
dynamic
。使用
Activator.CreateInstance(Type.FromProgId(“yadayada”))
创建对象。当从头开始编写时,要获得正确的结果是很痛苦的,但是现在您已经有了一个经过测试的版本,并且保证了良好的方法和属性名称。需要进行彻底的测试,当新版本对方法进行了太多更改时,您会遇到运行时崩溃。谢谢,但我不知道如何使用它以及ProgId是什么等等。。。我的类是这样的:progid是“CorelDRAW.Application”