2010-08-20 45 views
51

什麼VS項目選項「註冊COM互操作」實際上做了什麼?因爲當我使用這個選項啓用我的庫時,我可以從VBScript調用我的庫上的CreateObject。但是,如果我沒有這個構建,然後手動運行regasm的CreateObject失敗。所以我想知道 - VS2010做什麼,我不做?「註冊COM Interop」實際上做了什麼?

回答

50

它與使用/ tlb和/ codebase選項運行Regasm.exe的做法相同。/codebase選項可能是您忘記的選項。 Regasm喜歡假設您將該DLL放入GAC中,並在不這樣做時生成警告。 GAC確實是避免DLL Hell的一個很好的方法,總是COM問題。但在您的開發機器上不適合,您不想在開發和測試代碼時污染GAC。它只對用戶的機器很重要,可能會暴露於多個版本。

在64位機器上使用Regasm.exe的錯誤版本是另一種陷入困境的方法,通常在您的機器上有4個版本。一定要區分32位和64位版本(c:\ windows \ microsoft \ framework vs framework64),他們編寫不同的註冊表項。你想選擇一個與客戶端應用程序兼容的。使用兩者都可以,.NET代碼可以在任何一種模式下運行,但很不尋常。並區分v2.0.50727(.NET 2.0到3.5SP1)和v4.0版本。選擇正確的Visual Studio命令提示符是戰鬥的一半。

+3

謝謝!我使用/ codebase選項,但顯然使用64位而不是32位版本。顯式使用32位版本,並像魅力一樣工作。 – hackerhasid 2010-08-22 20:23:46

+0

請注意,使用這兩個版本是可以接受的,.NET代碼可以以任何方式運行。 – 2017-12-11 13:27:19

相關問題