ComErrorException'类未注册'

时间:2015-02-05 21:21:58

标签: c# unit-testing com integration-testing merge-replication

我正在尝试编写一个从SQLServer Replication dll调用对象的集成(单元)测试。

当它尝试实例化对象MergeSynchronizationAgent时,我得到一个异常:

'{Class Not Registered}'
-2147221164

我尝试将平台切换到x86,但这不起作用。

确切的dll是Microsoft.SQLServer.Replication.dll

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

要做的第一件事是确保对象已注册 - ProgId和CLSID在注册表中。如果你知道的话,转到HKEY_CLASSES_ROOT并搜索对象的ProgId。如果您不知道,请在HKEY_CLASSES_ROOT \ CLSID中搜索CLSID(如果它是64位DLL),如果DLL是32位DLL,则在HKEY_CLASSES_ROOT \ Wow6432Node \ CLSID中搜索。您的进程需要与要通过COM加载的DLL相同。

在尝试创建对象之前,您是否调用了CoInitialize()或OleInitialize()? (如果从.NET调用,则不必调用它)