VSTO Add-ins, COMAddIns and RequestComAddInAutomationService [duplicate]
I'm building my Visual Studio solution and in the output window there's an error just for one project.
In error tab:
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
In output tab:
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 ==========
Any ideas?
Solution 1:
When setting Register For Com interop
I've found that you do need to run as Administrator.
Without Administrator trying to compile I got errors like:
Cannot register assembly "C:\TFS\Project\Src\ProjectAddin\bin\Debug \ProjectAddin.dll" - access denied. Please make sure you're running the application as administrator. Access to the registry key 'HKEY_CLASSES_ROOT\CLSID{3A6192EA-3C9C-39EB-99A3-3DBFF8CA118F}' is denied.
The above registry key didn't exist so I created it, then trying to compile I got:
Cannot register type library "C:\TFS\Project\Src\ProjectAddin\bin\Debug \ProjectAddin.tlb". Error accessing the OLE registry. (Exception from HRESULT: 0x8002801C (TYPE_E_REGISTRYACCESS))
Solution
Turn off Register for COM interop and the error goes away, or the better solution:
Shift + Right click Visual Studio and open as Administrator, open the project. Tick Register for Com interop and it compiles successfully.
Solution 2:
I found out someone changed a property in the csproj.
To solve the error:
- You just have to right click the project,
- choose Build tab
- go to Output section
- uncheck Register for COM interop
Solution 3:
For me this problem started when I moved to a Win7 x64 machine. I have other team members without x64 so I assume this is the problem. I need COM interop so can't just turn it off. I was able to solve the problem by un-checking Register for COM interop (in project properties > Build page), and then adding a post-build event to do the COM registration:
"%Windir%\Microsoft.NET\Framework\v2.0.50727\regasm" /codebase "$(TargetPath)"