Ответ 1
Я узнал, что кто-то изменил свойство в csproj.
Чтобы решить эту ошибку:
- Вам просто нужно щелкнуть правой кнопкой мыши по проекту,
- выберите вкладку "Создание"
- перейти в раздел "Вывод"
- снять флажок Регистрация для COM-взаимодействия
Я строю свое решение 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 ==========
любые идеи?
Я узнал, что кто-то изменил свойство в csproj.
Чтобы решить эту ошибку:
При установке 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 и успешно скомпилируется.
Для меня эта проблема началась, когда я перешел на машину Win7 x64. У меня есть другие члены команды без x64, поэтому я предполагаю, что это проблема. Мне нужен COM-интерфейс, поэтому он не может просто отключить его. Я смог решить проблему, отменив регистрацию для COM-взаимодействия (в свойствах проектa > Строка), а затем добавив событие post-build для регистрации COM:
"%Windir%\Microsoft.NET\Framework\v2.0.50727\regasm" /codebase "$(TargetPath)"
Так как в вашем проекте вы включили параметр Регистрация для COM-взаимодействия, то он выполняется во время сборки. Этот параметр требует прав администратора, которые недоступны в Visual Studio, если вы не запустите Visual Studio в качестве администратора, явно.
Вы можете выполнить шаги, доступные по следующей ссылке, чтобы запустить Visual Studio в качестве администратора, а затем попытаться снова создать проект -
Как запустить Visual Studio в качестве администратора по умолчанию