2013-01-09 82 views
4

讓我通過說我不熟悉COM參考,並在Windows 7 64位計算機上使用VS2010作爲序言。今天早上,我從TFS下拉了一個現有的項目。然後我試圖建立的項目,並收到此錯誤:現有COM參考或添加新參考時出錯

The type or namespace name 'validatecom' could not be found (are you missing a using directive or an assembly reference?)

我得到這樣的警告:

Cannot get the file path for type library "d0b51ccc-aa31-47a1-b3ff-b8ed71c522a1" version 1.0. Library not registered. (Exception from HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED))

當我檢查的參考,果然,我看到黃色感嘆號的唯一COM解決方案中的參考。經過一些沒有結果的測試後,我決定嘗試添加一個新的COM參考。

添加引用 - > COM標籤 - >隨機M $庫

這導致帶有黃色感嘆號的新參考。我嘗試構建該項目以查看是否出現相同的錯誤。這一次,我收到此錯誤:

Encountered multiple versions of the assembly with GUID '23d736f1-acbc-11d3-b0e8-00104bff2710'. Try pre-importing one of these assemblies.

我得到這樣的警告:

Cannot find wrapper assembly for type library "ADODB".

我不知道,如果這兩個錯誤是相關的。如果不是,那麼解決第一個問題肯定優先於最後一個。其他

+2

很多微軟程序員在這裏回答問題。欺騙他們的僱主這樣的名字是一個非常愚蠢的方式來要求他們的幫助。 –

回答

4

一兩件事來檢查是,如果你的COM庫在Windows的系統登錄,可你這樣做了登記:

%windir%\system32\regsvr32 YourComLibrary.dll

下一步,你需要創建一個包裝了互操作的.NET的DLL圍繞着您正在嘗試在C#項目中引用的COM庫。要做到這一點的方法是通過運行類型庫進口商實用程序(使用Visual Studio 2010命令提示符):

tlbimp.exe YourComLibrary.dll /out:YourWrappedComLibrary.dll

對於ADODB參考,你可能需要引用主Interop大會用於ADO(ADODB)。這可以在您的機器上的以下位置找到。添加一個對此的引用,你應該很好。

C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\adodb.dll

希望以上可以幫助您。自從我與COM混淆以來,它太久了......內存可能有點模糊。請享用!

+0

我的第一個錯誤的關鍵在於缺少validatecom.dll的PIA程序集。相反,程序集在那裏,但COM參考不知道在哪裏找到它。添加PIA作爲參考解決了我的錯誤,並且我能夠繼續進行調試。 – YouGotCSharpInMyJava