2010-10-22 161 views
6

當構建屬性的註冊爲COM Interop選項被選中,我得到一個錯誤:註冊爲COM Interop

Cannot register assembly -access denied

如果未選中該選項,即可生成項目沒有任何錯誤。但我的要求是註冊COM對象,因爲我需要在VB中使用相同的對象。任何人都可以幫我解決這個問題嗎?

回答

9

在Windows Vista和更高,嘗試運行Visual Studio的提升,所以它有必要對您的輸出組件執行regasm的權限。

+0

謝謝,這個解決方案爲我工作..... – Kings 2010-10-22 12:41:56

+4

然後將它標記爲答案:) – 2010-10-22 12:45:33

8

對FrédéricHamidi的回答(upvote for your sir),您可以以管理員身份運行Visual Studio,或者關閉「註冊COM互操作」,然後以管理員身份打開命令提示符。

註冊的組件的命令是那麼這樣的事情(我的機器上 - W7 64位):

c:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe /tlb /codebase C:\path\to\your\DLL 

我個人使用後者作爲調試過程是相當複雜的,有時是不可能的通過代碼(或一些調試發生在另一臺機器上)

+1

非常有用。我正在構建一個古老的Biztalk 2002解決方案,其中RegisterForComInterop在大多數項目中都設置爲true。我不喜歡運行我的構建過程管理員,所以它試圖RegAsm編譯的DLL失敗。看起來,這是好的,因爲我並不需要它註冊的生成服務器上做......我們在部署時註冊應用服務器上編譯的DLL。謝謝! – 2012-03-07 19:07:51