> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ss14.art/llms.txt
> Use this file to discover all available pages before exploring further.

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

C# (а точнее, MSBuild) имеет систему, известную как [«конфигурации сборки»](https://learn.microsoft.com/en-us/visualstudio/ide/understanding-build-configurations?view=vs-2022). По сути, вы получаете удобное выпадающее меню в Visual Studio (или Rider), которое позволяет изменять способ компиляции и запуска вашего кода.

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

* `Debug` включает отладочные проверки (например, asserts) и компилируется/запускается без оптимизаций[^optimizations].
* `Release` не содержит отладочных проверок и компилируется *с* оптимизациями.

В RobustToolbox есть различные инструменты разработки, которые не могут быть включены в боевые релизные сборки. Примеры — интерактивная консоль `csi` (C# Interactive) по соображениям безопасности. Эти инструменты обычно компилируются за директивой препроцессора `TOOLS` [preprocessor define](./preprocessor-defines), что и отключает их.

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

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

* `Debug`: отладочные проверки, инструменты, без оптимизаций.
* `DebugOpt`: как `Debug`, но с включёнными оптимизациями.
* `Tools`: без отладочных проверок, но с инструментами и оптимизациями. Это то, что вам нужно при **mapping**'e.
* `Release`: без отладочных проверок, без инструментов, с оптимизациями. Эта конфигурация максимально приближена к боевой сборке лаунчера.

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

## Как их использовать

### Rider

<img src="https://mintcdn.com/meowmew/TvZPuS8U3lxB2Npc/images/build-configurations.png?fit=max&auto=format&n=TvZPuS8U3lxB2Npc&q=85&s=d802fb1d8267aa3e63f9023ba38a29b6" alt="build-configurations.png" width="270" height="236" data-path="images/build-configurations.png" />

Выберите нужную конфигурацию из выпадающего списка в верхней части окна.

### Visual Studio

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

### Visual Studio Code

TODO
