Ошибка 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 и повторное открытие, щелкнув правой кнопкой мыши по нему → Запуск от имени администратора, решил проблему для меня.