注册汇编时出错MSB3216

cas*_*man 11 com visual-studio-2008 visual-studio windows-7

以下是错误详细信息:

在错误列表中:

错误1无法注册程序集"C:\ Users\cboardman\Documents\Visual Studio 2008\Projects\ExcelAddIn1\ExcelAddIn1\bin\Debug\ExcelAddIn1.dll" - 访问被拒绝.请确保您以管理员身份运行该应用程序.访问注册表项"HKEY_CLASSES_ROOT\ExcelAddIn1 ..."被拒绝.C:\ Windows\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets 3019 9 ExcelAddIn1

在构建输出中:

目标UnmanagedRegistration:C:\ Windows\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(3019,9):错误MSB3216:无法注册程序集"C:\ Users\cboardman\Documents\Visual Studio 2008\Projects\ExcelAddIn1\ExcelAddIn1\bin\Debug\ExcelAddIn1.dll" - 访问被拒绝.请确保您以管理员身份运行该应用程序.访问注册表项"HKEY_CLASSES_ROOT\ExcelAddIn1 ..."被拒绝.在项目"ExcelAddIn1.csproj"中完成构建目标"UnmanagedRegistration" - 失败.

根据我在网上找到的内容,我需要以管理员身份运行Visual Studio.对于小钉子来说,这似乎是一把大锤子.有没有办法解决这个问题(就像以管理员身份运行注册一样)?

Jar*_*Par 9

不幸的是,没有一种简单的方法可以做到这一点.默认情况下,注册组件会将条目添加到注册表中的受保护密钥(特别是在HKLM下).没有管理权限就无法做到这一点.

从技术上讲,可以使用HKCU下的等效键将COM组件注册为非管理员.然而,这不是一个微不足道的变化,我不相信注册程序集的.Net工具可以配置为执行此操作.

我认为您最好的选择是在构建期间禁用注册.然后打开一个单独的Admin窗口,您可以手动注册DLL From以进行调试.只有在更改COM相关接口或DLL的位置时才需要重新注册,因此不必为每个F5完成.


小智 5

关闭Visual Studio并重新打开右键 - >以管理员身份运行为我解决了问题.