none
Com Interop Compile 錯誤: error MSB3211: 沒有針對 COM Interop 註冊組件 RRS feed

  • 問題

  • 不知為何,電腦重灌之後,原本可行的專案,卻無法正常Compile出現以下的錯誤!!
    但是一直查不到原因出在哪?可以麻煩幫忙看一下問題嗎?
    適用Visual Basic 2008 SP1

     
    ------ 已開始全部重建: 專案: MPI_PlmLibAPI, 組態: Debug Any CPU ------
    C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets : warning : 型別程式庫匯入工具遇到不是衍生自 IUnknown 的介面: '_HiddenInterface'。
    C:\WINDOWS\Microsoft.NET\Framework\v3.5\Vbc.exe /noconfig /imports:Microsoft.VisualBasic,System,System.Collections,System.Collections.Generic,System.Data,System.Diagnostics /optioncompare:Binary /optionexplicit+ /optionstrict:custom /nowarn:42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 /optioninfer+ /rootnamespace:MPI_PlmLibAPI /doc:obj\Debug\MPI_PlmLibAPI.xml /define:"CONFIG=\"Debug\",DEBUG=-1,TRACE=-1,_MyType=\"Windows\",PLATFORM=\"AnyCPU\"" /reference:..\..\..\PLM_Application\Broadway\BoradwayPLMDll\BroadwayInnovatorAPI.dll,"C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PublicAssemblies\EnvDTE.dll",D:\project\PLM\PLM_App\InteropPLMLogin\bin\Debug\InteropPLMLogin.dll,..\..\..\PLM_Application\Broadway\BoradwayPLMDll\IOM.dll,D:\project\PLM\PLM_App\MPI_AML\bin\Debug\MPI_AML.dll,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll,C:\WINDOWS\assembly\GAC\Office\11.0.0.0__71e9bce111e9429c\Office.dll,obj\Debug\Interop.EComponent.dll,obj\Debug\Interop.Excel.dll,obj\Debug\Interop.PCF_Lib.dll,obj\Debug\Interop.Scripting.dll,obj\Debug\Interop.VBA.dll /debug+ /debug:full /filealign:512 /out:obj\Debug\MPI_PlmLibAPI.dll /resource:obj\Debug\MPI_PlmLibAPI.Resources.resources /target:library clsDAF.vb clsDocument.vb clsFile.vb clsMpiDocumentSet.vb clsMpiPlm.vb clsSN.vb clsUser.vb mdGlobal.vb "My Project\AssemblyInfo.vb" "My Project\Application.Designer.vb" "My Project\Resources.Designer.vb" "My Project\Settings.Designer.vb"
    D:\project\PLM\PLM_App\MPI_PlmLibAPI\MPI_PlmLibAPI\clsMpiPlm.vb(51) : warning BC42102: 'Public Property InnServer() As Object' 無法以屬性 'Let' 公開 (Expose) 給 COM。您無法從 Visual Basic 6.0 使用 'Let' 陳述式將非物件值 (例如數值或字串) 指定給這個屬性。
    D:\project\PLM\PLM_App\MPI_PlmLibAPI\MPI_PlmLibAPI\clsUser.vb(54) : warning BC42102: 'Public Property InnServer() As Object' 無法以屬性 'Let' 公開 (Expose) 給 COM。您無法從 Visual Basic 6.0 使用 'Let' 陳述式將非物件值 (例如數值或字串) 指定給這個屬性。
    MPI_PlmLibAPI -> D:\project\PLM\PLM_App\MPI_PlmLibAPI\MPI_PlmLibAPI\bin\Debug\MPI_PlmLibAPI.dll
    C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(2937,9): error MSB3211: 沒有針對 COM Interop 註冊組件 'Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'。請以 regasm.exe /tlb 註冊此組件。
    C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(2937,9): error MSB3212: 無法將組件 "D:\project\PLM\PLM_App\MPI_PlmLibAPI\MPI_PlmLibAPI\bin\Debug\MPI_PlmLibAPI.dll" 轉換成型別程式庫。型別程式庫匯出工具在處理 'MPI_PlmLibAPI.clsDAF+_clsDAF.Create(DocumentList), MPI_PlmLibAPI' 時發生錯誤。錯誤: 載入類型程式庫/DLL 時發生錯誤。
    專案 "MPI_PlmLibAPI.vbproj" 建置完成 -- 失敗。
    2009年2月2日 上午 09:02

解答

  • 看起來你的那個 .NET DLL 是要給 COM 用的,如果那個 DLL 的專案也在你的電腦上,那就重新建置它。

    如果沒有,那你可以用 regasm.exe 來註冊它,但前提是它已經是使用 COM Visible 的方式建成組件。


    不想被人認為是小白,就不要總是在做一堆會讓人認為是小白的事。
    2009年2月2日 下午 04:16
    版主

所有回覆

  • 看起來你的那個 .NET DLL 是要給 COM 用的,如果那個 DLL 的專案也在你的電腦上,那就重新建置它。

    如果沒有,那你可以用 regasm.exe 來註冊它,但前提是它已經是使用 COM Visible 的方式建成組件。


    不想被人認為是小白,就不要總是在做一堆會讓人認為是小白的事。
    2009年2月2日 下午 04:16
    版主
  •  感謝你的回答,但其實您說的做法我也嘗試過,仍然出現錯誤!!

    狀況是,我的電腦因中毒重新安裝過,
    電腦中有一份專案的備份及正在開發的版本!!!

    但是奇妙的是,在我剛安裝完畢 將專案打開 要重新建置的時候,卻一直出現錯誤,如上面的錯誤訊息
    後來嘗試了好久,原來系統內已經將我備份專案中的元件註冊,造成無法成功建置

    解決辦法是:我開起舊專案執行清除,在開新專案建置,問題就解決了,

    不過 系統怎麼會將 沒有啟動的專案下的元件註冊的?一直很納悶
    2009年2月20日 上午 08:24