2011-02-27 76 views
1

對於在Web中註冊.NET COM對象的每個示例,我都會看到用於執行此工作的工具「regasm」。每個人都這樣做!
但它從來沒有爲我工作!我厭倦了試圖克服它!我唯一的解決方案是regsvr32,它需要一個我只能在C++中定義的函數。
請告訴我爲什麼它不工作!regasm不起作用

考慮到它不適用於我所有的4臺電腦以及3臺運行Windows 7的虛擬機,任何人都可以給我看一個regasm調用的實例嗎?我認爲我是個白癡。

+0

你能爲我們定義「不起作用」嗎? –

回答

8

註冊[ComVisible] .NET程序集與Regsvr32.exe是不可能的。它沒有Regsvr32需要的所需的DllRegisterServer入口點。您將不得不使其與Regasm.exe或安裝項目一起使用。當您將服務器部署到另一臺計算機時,後者是必需的。

失敗模式很少。除以外:

  • 忘記使用/ codebase選項。如果您未將程序集部署到GAC,則是必需的,這是開發人員不應該執行的操作。

  • 使用Regasm.exe的錯誤版本。在64位計算機上有兩個,如果客戶端代碼是64位,則Framework64目錄包含您必須使用的目錄。

  • 從未提升的命令提示符運行它。 Regasm.exe寫入註冊表的HKLM配置單元,這是UAC主動阻止的。這是Vista和Win7上的問題。

剛剛得到程序集嚴重錯誤當然也有可能。如不製作一個或多個接口和/或類[ComVisible]。

+0

Visual C++(.NET)可以執行DLLRegisterServer,這就是爲什麼我可以使用regsvr32。無論如何,我猜,這個/ codebase選項應該是關鍵。 – Vercas

+1

'/ codebase'就是答案。非常感謝您最終打開我的shell編程的方式! – Vercas

0

其可能的,我以前這樣的挑戰,我跑在cmd窗口這段代碼,它的工作 我發現它依賴於.NET Framework的版本的組件上 BUIT複製並粘貼下面

代碼
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\regasm.exe MyAssembly.dll 

如果它對您有用,敬請投票。