2010-10-22 189 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