Ошибка MSB3216 при регистрации сборки

Вот сведения об ошибке:

В списке ошибок:

Ошибка 1 Не удается зарегистрировать сборку "C:\Users\cboardman\Documents\Visual Studio 2008\Projects\ExcelAddIn1\ExcelAddIn1\bin\Debug\ExcelAddIn1.dll" - доступ запрещен. Убедитесь, что вы используете приложение как администратор. Доступ к разделу реестра "HKEY_CLASSES_ROOT\ExcelAddIn1..." отклонен. C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets 3019 9 ExcelAddIn1

В выводе сборки:

Целевая неуправляемая регистрация:     C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(3019,9): ошибка MSB3216: невозможно зарегистрировать сборку "C:\Users\cboardman\Documents\Visual Studio 2008\Projects\ExcelAddIn1\ExcelAddIn1\bin\Debug\ExcelAddIn1.dll" - доступ запрещен. Убедитесь, что вы используете приложение как администратор. Доступ к разделу реестра "HKEY_CLASSES_ROOT\ExcelAddIn1..." отклонен. Сделана цель построения "Неуправляемая регистрация" в проекте "ExcelAddIn1.csproj" - FAILED.

Из того, что я нашел в Интернете, мне нужно запустить Visual Studio в качестве администратора. Это похоже на большой молоток для небольшого гвоздя. Есть ли способ обойти это (например, как запустить только регистрацию в качестве администратора)?

Ответ 1

К сожалению, нет простого способа сделать это. По умолчанию регистрация компонентов добавляет записи в защищенные ключи в реестре (в частности, в HKLM). Это невозможно сделать без административных прав.

Технически возможно зарегистрировать COM-компоненты как не-администратор, используя эквивалентные ключи под HKCU. Однако это не тривиальное изменение, и я не верю, что инструменты .Net, которые регистрируют сборки, могут быть настроены для этого.

Я думаю, что ваш лучший вариант - отключить регистрацию во время сборки. Затем откроется отдельное окно администратора, в котором вы можете вручную зарегистрировать DLL From для целей отладки. Перерегистрация действительно необходима, только если вы измените связанные с COM интерфейсы или местоположение библиотеки DLL, поэтому ее не нужно делать для каждого F5.

Ответ 2

Закрытие Visual Studio и повторное открытие, щелкнув правой кнопкой мыши по нему → Запуск от имени администратора, решил проблему для меня.