指间(蒋建华)--天行健,君子当自强不息

        专注于微软产品及.Net技术的blog
  博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理

Windows 7下VS引用Com组建编译错误的一个解决方法

Posted on 2011-03-14 09:44  蒋建华  阅读(519)  评论(0编辑  收藏  举报

项目中引用了C++写的COM组件,以前在windows server 2008 R2+VS 2010下没有问题,重装系统后使用windows 7+ VS 2010,编译报错:

 

Error         1       Cannot register assembly "E:\WorkFolder\CardManagement\SourceCode\CardMW\Rare.Card.Libary\bin\Debug\Rare.Card.Libary.dll" - access denied. Please make sure you're running the application as administrator. Access to the registry key 'HKEY_CLASSES_ROOT\Rare.Card.Libary.MifareOneHelper' is denied. Rare.Card.Libary

 

解决办法:

若将项目-属性-编译-Register for com interop前面的勾去掉,会出现运行时错误

解决方法:用Regasm进行手工注册

Win7下必须以管理员身份运行,否则注册不会成功。

C:\Windows\Microsoft.NET\Framework\v2.0.50727\Regasm.exe

如果不行,则重新启动VS,选择以管理员身份运行,则可以进行自动注册

实际上,还有一个变通的办法,直接使用管理员身份在开始菜单中打开VS就可以了,不过每次都这样打开有些麻烦而已。