什麼VS項目選項「註冊COM互操作」實際上做了什麼?因爲當我使用這個選項啓用我的庫時,我可以從VBScript調用我的庫上的CreateObject。但是,如果我沒有這個構建,然後手動運行regasm的CreateObject失敗。所以我想知道 - VS2010做什麼,我不做?「註冊COM Interop」實際上做了什麼?
51
A
回答
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命令提示符是戰鬥的一半。
相關問題
- 1. 「註冊COM Interop」實際上做了什麼? Q2
- 2. 註冊爲COM Interop
- 3. session_register_shutdown實際上做了什麼?
- 4. Int [] Reverse - 這實際上做了什麼?
- 5. rake db:test:prepare實際上做了什麼?
- 6. LD_INCLUDE_PATH實際上做了什麼嗎?
- 7. numpy.cov實際上做了什麼
- 8. ld -m --verbose實際上做了什麼?
- 9. gwt PlaceTokenizer實際上做了什麼?
- 10. Arduino F():它實際上做了什麼
- 11. ADMManifest.checkManifestAuthoredProperly()實際上做了什麼?
- 12. android:stretchMode實際上做了什麼?
- 13. CascadeType.REFRESH實際上做了什麼?
- 14. CloudQueue.EndAddMessage(IAsyncResult)實際上做了什麼?
- 15. e.preventDefault()方法實際上做了什麼?
- 16. Python的__file__實際上做了什麼?
- 17. std :: ofstream :: close()實際上做了什麼?
- 18. XCode'Clean'實際上做了什麼?
- 19. 實際上做了什麼glutswapbuffers?
- 20. Sinatra :: Base.condition實際上做了什麼?
- 21. NSLog實際上做了什麼?
- 22. SetPriorityClass(REALTIME_PRIORITY_CLASS)實際上做了什麼?
- 23. TwoPassFilter GPUImage實際上做了什麼?
- 24. terraform刷新實際上做了什麼?
- 25. SpringClassRule/SpringMethodRule實際上做了什麼?
- 26. IMetadataExchange端點實際上做了什麼?
- 27. Android SQLite - SQLiteDatabase.replace()實際上做了什麼?
- 28. MvcBuildViews實際上做了什麼嗎?
- 29. pdb文件實際上做了什麼?
- 30. regsvr32 filename.ax實際上做了什麼?
謝謝!我使用/ codebase選項,但顯然使用64位而不是32位版本。顯式使用32位版本,並像魅力一樣工作。 – hackerhasid 2010-08-22 20:23:46
請注意,使用這兩個版本是可以接受的,.NET代碼可以以任何方式運行。 – 2017-12-11 13:27:19