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

Мне потребовалось некоторое время, чтобы понять это ...

Проблема в том, что «2011-03-13 02:53:50» является незаконным из-за перехода на летнее время между 2 и 3 AM, поэтому все временные значения между 2 и 3 часами утра в любой день введения ДСТ недействительны. То же самое для '2016-03-13 02:32:21' и т. Д.

Измените системный часовой пояс на тот, который не использует DST, и вы должны быть в порядке.

11
задан JaredPar 25 June 2010 в 15:48
поделиться

2 ответа

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

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

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

9
ответ дан 3 December 2019 в 08:28
поделиться

У меня была эта та же проблема с Visual Studio 2017.

ответ JaredPar привел меня к этой реализации:

for /f %%a in ('dir %windir%\Microsoft.Net\Framework\regasm.exe /s /b') do set current_regasm="%%a"
set command=%current_regasm% $(TargetPath) /tlb:$(TargetDir)\$(TargetName).tlb /codebase ^; sleep 2
set elevated_command="Start-Process PowerShell.exe -Wait -ArgumentList \"-ExecutionPolicy Bypass -Command %command%\"
powershell -noprofile -ExecutionPolicy Bypass -Command %elevated_command% -Verb RunAs"
  • В выпадающем run the post-build event: выбор: On successful build снимок экрана
  • Выполнение сборка

В конце сборки Вы будете рассматривать powershell окно, выполненное как администратора (в зависимости от Ваших настроек, которые у Вас может быть всплывающее окно Управления учетными записями пользователей (UAC), прося, чтобы Вы подтвердили, прежде чем это будет работать).

Примечание:

  • Это будет находить последнюю версию платформы.NET и использовать regasm оттуда (кредит: Scott C).
  • Увеличение ; sleep 2, если Вы хотите дольше посмотреть на вывод для подтверждения регистрации (или использование ; pause вместо этого).
0
ответ дан 3 December 2019 в 08:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: