Visual Studio 2010 - TYPE_E_REGISTRYACCESS

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

любые идеи?

Ответы

Ответ 1

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

Чтобы решить эту ошибку:

  • Вам просто нужно щелкнуть правой кнопкой мыши по проекту,
  • выберите вкладку "Создание"
  • перейти в раздел "Вывод"
  • снять флажок Регистрация для COM-взаимодействия

Ответ 2

При установке 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 и откройте его как Администратор, откройте проект. Tick ​​зарегистрируйтесь для компиляции Com и успешно скомпилируется.

Ответ 3

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

"%Windir%\Microsoft.NET\Framework\v2.0.50727\regasm" /codebase "$(TargetPath)"

Ответ 4

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

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

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