Visual Studio 2010 - TYPE_E_REGISTRYACCESS - PullRequest
       8

Visual Studio 2010 - TYPE_E_REGISTRYACCESS

17 голосов
/ 24 февраля 2011

Я строю свое решение 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

На вкладке вывода:

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 ==========

есть идеи?

Ответы [ 4 ]

31 голосов
/ 05 июня 2012

При настройке 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))

Решение

Отключите регистр для COM-взаимодействия, и ошибка исчезнет.

Shift + щелкните правой кнопкой мыши Visual Studio и откройте от имени администратора, откройте проект. Зарегистрируйтесь для взаимодействия с Com, и он успешно компилируется.

24 голосов
/ 25 февраля 2011

Я узнал, что кто-то изменил свойство в csproj.

Для устранения ошибки:

  • Вы просто должны щелкнуть правой кнопкой мыши по проекту,
  • выберите Build tab
  • перейти к Вывод раздел
  • снять отметку Зарегистрироваться для COM-взаимодействия
10 голосов
/ 21 июля 2011

Для меня эта проблема началась, когда я перешел на компьютер с Win7 x64.У меня есть другие члены команды без x64, поэтому я предполагаю, что это проблема.Мне нужно COM-взаимодействие, поэтому я не могу просто выключить его.Мне удалось решить проблему, сняв флажок Зарегистрировать взаимодействие COM (в свойствах проекта> Страница сборки), а затем добавив событие после сборки для регистрации COM:

"%Windir%\Microsoft.NET\Framework\v2.0.50727\regasm" /codebase "$(TargetPath)"
2 голосов
/ 03 ноября 2016

Поскольку в вашем проекте вы включили Регистрация для COM-взаимодействия , то же самое выполняется во время сборки.Для этого параметра требуются права администратора, которые недоступны в Visual Studio, если вы явно не запустите Visual Studio от имени администратора.

Чтобы выполнить Visual Studio от имени администратора, выполните шаги, доступные по следующей ссылке, а затем попробуйте создать проектснова -

Как запустить Visual Studio от имени администратора по умолчанию

...