Мне потребовалось некоторое время, чтобы понять это ...
Проблема в том, что «2011-03-13 02:53:50» является незаконным из-за перехода на летнее время между 2 и 3 AM, поэтому все временные значения между 2 и 3 часами утра в любой день введения ДСТ недействительны. То же самое для '2016-03-13 02:32:21' и т. Д.
Измените системный часовой пояс на тот, который не использует DST, и вы должны быть в порядке.
К сожалению, нет простого способа сделать это. По умолчанию при регистрации компонентов добавляются записи в защищенные разделы реестра (в частности, в HKLM). Это невозможно сделать без прав администратора.
Технически возможно зарегистрировать компоненты COM как неадминистративные, используя эквивалентные ключи в HKCU. Однако это нетривиальное изменение, и я не верю, что инструменты .Net, которые регистрируют сборки, можно настроить для этого.
Думаю, лучше всего отключить регистрацию во время сборки. Затем откройте отдельное окно администратора, где вы можете вручную зарегистрировать DLL From для целей отладки. Перерегистрация действительно необходима только в том случае, если вы меняете интерфейсы, связанные с COM, или расположение DLL, поэтому это не нужно делать для каждого F5.
У меня была эта та же проблема с Visual Studio 2017.
ответ JaredPar привел меня к этой реализации:
Register for COM interop
, События Сборки Выбора снимка экрана 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), прося, чтобы Вы подтвердили, прежде чем это будет работать).
Примечание:
; sleep 2
, если Вы хотите дольше посмотреть на вывод для подтверждения регистрации (или использование ; pause
вместо этого).