Конфигурации сборки

В C# (ну, технически, в MSBuild) есть система, известная как «конфигурации сборки». По сути, вы получаете удобное выпадающее меню в Visual Studio (или Rider), позволяющее менять способ компиляции и запуска кода.

В стандартном проекте C# у вас есть две конфигурации: Debug и Release.

  • Debug имеет включённые отладочные проверки (например, asserts) и компилируется/запускается без оптимизаций1.
  • Release не имеет отладочных проверок и компилируется с оптимизациями.

В RobustToolbox есть разные инструменты разработки, которые нельзя включать в боевые релизные сборки. Примером этого является интерактивное окно csi C# Interactive, по соображениям безопасности. Эти инструменты обычно компилируются за препроцессорным определением TOOLS, и именно так они и отключаются.

Более того, во время разработки игры может быть в целом полезно запускать оптимизации чаще обычного. Отсутствие стабильного фреймрейта на отладочной сборке может сделать тестирование довольно мучительным, но простое переключение с Debug на Release в стандартной модели C# также убирает проверки вроде asserts, что меняет поведение и может заставить вас пропустить проблемы.

Из-за этого у нас в решениях есть следующий набор конфигураций:

  • Debug: есть отладочные проверки, инструменты и нет оптимизаций.
  • DebugOpt: как Debug, но с включёнными оптимизациями.
  • Tools: нет отладочных проверок, но инструменты и оптимизации включены. Это то, что вы бы использовали при маппинге.
  • Release: нет отладочных проверок, нет инструментов, оптимизации включены. Задумана как максимально близкая к боевой сборке лаунчера, насколько это возможно.
1

Включённые оптимизации обычно затрудняют получение точной информации такими инструментами, как отладчики, поэтому на отладочных сборках они отключены.

Как этим пользоваться

Rider

build-configurations.png

Выберите в том выпадающем списке в верхней части окна.

Visual Studio

Мне слишком лень искать скриншот, но выпадающий список выглядит довольно похоже на Rider.

Visual Studio Code

TODO

Subpages