项目中引用了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就可以了,不过每次都这样打开有些麻烦而已。