К сожалению, для вашего варианта использования он подходит.
Для решения ваших проблем:
- Debugger.Break будет работать для любой конфигурации сборки.Отладка, выпуск или что-то еще.
У Тима Шмельтера было хорошее предложение.Если вы хотите ограничить Debugger.Break только отладочными сборками, вы можете использовать Условная компиляция .
#if DEBUG
Debugger.Break();
#endif
Debugger.Break будет иметь побочные эффекты, даже если отладчик не подключен.
Если отладчик не подключен, он либо попытается присоединить отладчик, либо отправит сообщениеподсистема отчетов об ошибках Windows (WER) в зависимости от того, на какую версию .Net Framework вы нацеливаетесь.
Если отладчик не подключен, пользователей спрашивают, хотят ли они присоединить отладчик.
...
Начиная с .NET Framework 4, среда выполнения больше не контролирует запуск отладчика для метода Break, а вместо этого сообщает об ошибке подсистеме Windows Error Reporting (WER)..
https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.debugger.break?view=netframework-4.7.2#remarks