Visual Studio 2010 - TYPE_E_REGISTRYACCESS

Jun*_*r M 17 typelib visual-studio-2010

我正在构建我的VS2010解决方案,在输出窗口中,只有一个项目出错.

在错误选项卡中:

Error   161 Cannot register type library "D:\Sites\Website\MyPortal.Website.Controllers\bin\Debug\MyPortal.Website.Controllers.tlb". Error accessing the OLE registry. (Exception from HRESULT: 0x8002801C (TYPE_E_REGISTRYACCESS)) MyPortal.Website.Controllers
Run Code Online (Sandbox Code Playgroud)

在输出选项卡中:

Compile complete -- 0 errors, 153 warnings
  MyPortal.Website.Controllers -> D:\Sites\Website\MyPortal.Website.Controllers\bin\Debug\MyPortal.Website.Controllers.dll
c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(3341,9): warning MSB3214: "D:\Sites\Website\MyPortal.Website.Controllers\bin\Debug\MyPortal.Website.Controllers.dll" does not contain any types that can be registered for COM Interop.
c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(3341,9): error MSB3213: Cannot register type library "D:\Sites\Website\MyPortal.Website.Controllers\bin\Debug\MyPortal.Website.Controllers.tlb". Error accessing the OLE registry. (Exception from HRESULT: 0x8002801C (TYPE_E_REGISTRYACCESS))
========== Rebuild All: 8 succeeded, 1 failed, 0 skipped ==========
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Jer*_*son 31

设置时Register For Com interop 我发现您确实需要以管理员身份运行.

没有管理员尝试编译我得到的错误如下:

无法注册程序集"C:\ TFS\Project\Src\ProjectAddin\bin\Debug\ProjectAddin.dll" - 访问被拒绝.请确保您以管理员身份运行该应用程序.访问注册表项"HKEY_CLASSES_ROOT\CLSID {3A6192EA-3C9C-39EB-99A3-3DBFF8CA118F}"被拒绝.

上面的注册表项不存在所以我创建它,然后尝试编译我得到:

无法注册类型库"C:\ TFS\Project\Src\ProjectAddin\bin\Debug\ProjectAddin.tlb".访问OLE注册表时出错.(来自HRESULT的异常:0x8002801C(TYPE_E_REGISTRYACCESS))

关闭Register for COM interop并且错误消失.

Shift +右键单击Visual Studio并以管理员身份打开,打开项目.勾选注册Com interop并成功编译.

  • 大家好,这就是我发现的方式,请理解这是一个不同的鱼:http://stackoverflow.com/questions/10875278/vsto-add-ins-comaddins-and-requestcomaddinautomationservice (2认同)

Jun*_*r M 24

我发现有人在csproj中更改了一个属性.

要解决错误:

  • 你只需要右键单击该项目,
  • 选择Build选项卡
  • 转到输出部分
  • 取消选中注册COM互操作

  • 该解决方案可能会破坏构建,因为它将停止COM互操作注册 (3认同)

Ror*_*ory 10

对我来说,当我搬到Win7 x64机器时,这个问题就出现了.我有其他团队成员没有x64所以我认为这是问题所在.我需要COM互操作,所以不能把它关掉.我能够通过取消选中Register for COM interop(在项目属性> Build页面中),然后添加一个post-build事件来进行COM注册来解决问题:

"%Windir%\Microsoft.NET\Framework\v2.0.50727\regasm" /codebase "$(TargetPath)"
Run Code Online (Sandbox Code Playgroud)