2015-02-05 156 views
-1

我正在嘗試編寫一個從SQLServer複製dll調用對象的集成(單元)測試。ComErrorException'類未註冊'

當它試圖實例化對象MergeSynchronizationAgent我得到一個異常:

'{Class Not Registered}' 
-2147221164 

我試圖切換平臺,x86的,但沒有奏效。

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

任何幫助,不勝感激!

+0

你確定sql server在該機器上安裝正確嗎?我懷疑你將不得不手動註冊任何核心COM對象。你是否在其他地方複製文件表單?任何有這種Regsrvr32函數的方法都可能有所幫助。 – 2015-02-05 21:27:46

+0

哈哈。是的SQL安裝正確。這已經在多臺計算機上得到了相同的結果。我不知道它是否存在Regsver32問題,那是我希望在發佈此問題時找到解決方案的。 – TMan 2015-02-05 21:53:43

回答

0

首先要做的是確保對象已註冊 - ProgId和CLSID在註冊表中。轉到HKEY_CLASSES_ROOT並搜索該對象的ProgId(如果知道它)。如果您不知道它,請搜索HKEY_CLASSES_ROOT \ CLSID中的CLSID(如果它是64位DLL),並在HKEY_CLASSES_ROOT \ Wow6432Node \ CLSID中搜索(如果該DLL是32位DLL)。您的進程需要與您想要通過COM加載的DLL具有相同的位寬。

在嘗試創建對象之前是否調用了CoInitialize()或OleInitialize()? (如果從.NET調用,不應該調用它)