2013-06-27 145 views
2

我試圖在.NET 4.0中創建一個32位COM對象。 COM對象的使用者是一個簡單的JScript。在Visual Studio中註冊Com Interop選項但直接調用Regasm不會

當我的複選框設置爲Visual Studio的「註冊COM互操作」設置,一切工作正常。我能夠在我的JScript中創建COM對象並運行我所有的測試代碼。

但是,我希望能夠在沒有Visual Studio的32位計算機(運行.NET 4.0)上進行部署。所以,我有一個簡單的install.bat文件以註冊DLL:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm ComTest.dll /codebase /tlb:ComTest.tlb 

由於這是一個32位彙編,我小心地使用32位regasm.exe。這告訴我它註冊成功。我確實收到了使用/codebase選項的警告,告訴我我可能正在使用現有名稱空間,但這在部署環境中不成問題。

但現在,當我走在我的JScript中創建我的對象,我得到

Could not create object named "COMTest". 

是不是有什麼特殊的Visual Studio是這樣做,被正確的註冊它說我失蹤?

如果可能,我寧願不必簽署大會。

回答

2

我發現了這個問題。 (當然只有在我發佈到SO之後...)

對象註冊很好。問題是在COM對象的構造函數中缺少依賴關係。

將初始化代碼移出構造函數和Initialize()方法暴露了問題。

Visual Studio因爲它運行的目錄而工作。

相關問題