Почему этот Debug.Assert пропущен?

avatar
ProfK
8 апреля 2018 в 06:23
225
1
3

У меня есть следующий код:

Debug.Assert(model.OrganizationId != null, "model.OrganizationId != null");
var orgId = model.OrganizationId.Value;

Однако строка Debug.Assert неактивна, и при наведении на нее курсора появляется сообщение:

Вызов метода пропущен. Компилятор не сгенерирует метод вызов, потому что метод является условным или является частичным методом без реализация.

Моя IDE находится в режиме Debug, и я не вижу ничего необычного. Почему это утверждение пропускается? Я не слишком беспокоюсь о том, что OrganizationId является нулевым, так как он помечен как Required на модели, но я обеспокоен тем, что очень нормально выглядящий Debug.Assert пропускается.

Источник

Ответы (1)

avatar
M.kazem Akhgary
8 апреля 2018 в 07:00
3

Debug.Assert отмечен этим атрибутом.

[System.Diagnostics.Conditional("DEBUG")]

Это означает, что этот метод компилируется, когда в конфигурации вашего проекта определена константа "DEBUG".

Обратите внимание, что это не относится к режиму выпуска или отладки сборки. Но по умолчанию в конфигурации отладки определена константа «DEBUG».

Чтобы исправить это, перейдите в настройки проекта, раздел сборки, убедитесь, что для конфигурации установлено значение Отладка. Затем отметьте опцию «определить константу DEBUG».

ProfK
8 апреля 2018 в 09:08
0

Конфигурация настроена на отладку и отмечена опция «определить константу DEBUG». Раньше у меня была конфигурация сборки, установленная на RELEASE, но теперь все выглядит правильно для конфигурации отладки. Единственный явно определенный символ условной компиляции — NETCOREAPP2_0. Другие Debug.Assert в порядке и не заглушены. Может быть, мне просто нужно снова перезапустить VS. Спасибо.

M.kazem Akhgary
8 апреля 2018 в 09:11
0

отличный. так проблема ушла? проблема должна исчезнуть или попробуйте перезапустить визуальную студию.

ProfK
8 апреля 2018 в 09:16
0

Перезагрузка помогла, спасибо. Глупо с моей стороны не думать об этом, но я действительно занят тестированием, и это меня не беспокоило. Я согласился, потому что, если бы это не было просто причудой VS, ваш ответ был бы точным.