📂 Папки bin/
и obj/
в C#
📁 bin/
(Binary)
bin
(сокращение от binaries) — это выходная директория, в которой оказываются уже собранные исполняемые файлы проекта:
🧩 Содержимое:
.exe
или.dll
— основная сборка проекта.deps.json
— зависимости.pdb
— отладочные символы (если Debug).runtimeconfig.json
— настройки среды выполнения
📍 Где находится:
/bin/Debug/net8.0/
или
/bin/Release/net8.0/
⚙️ obj/
(Object)
obj
— промежуточная директория, где хранятся вспомогательные артефакты сборки, используемые MSBuild.
🧩 Содержимое:
.csproj.nuget.g.props
и.targets
— обработка зависимостей NuGetproject.assets.json
— кэш зависимостей.g.cs
,.AssemblyInfo.cs
— сгенерированные файлы компиляции*.dll
— временные сборки перед окончательной компоновкой
🛠 Зачем нужна:
obj/
помогает ускорять сборку: она кэширует шаги MSBuild, чтобы при следующем запуске не пересобирать всё заново.
🧹 Можно ли удалять bin/
и obj/
?
Да ✅
Их можно безопасно удалить в любой момент — они будут пересозданы при следующей сборке:
dotnet clean
🧭 Debug vs Release
В C# существует два основных режима сборки: Debug
и Release
.
🐞 Debug
Характеристика | Значение |
---|---|
🔍 Отладочная информация | Включена (.pdb файлы) |
🧠 Оптимизация | Отключена |
📁 Путь вывода | bin/Debug/net8.0/ |
💻 Используется при | Разработке и отладке |
Пример в .csproj
:
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
<DefineConstants>DEBUG;TRACE</DefineConstants>
<Optimize>false</Optimize>
</PropertyGroup>
🚀 Release
Характеристика | Значение |
---|---|
🔍 Отладочная информация | Отключена или минимальная |
⚡ Оптимизация | Включена |
📁 Путь вывода | bin/Release/net8.0/ |
📦 Используется при | Финальной сборке, публикации |
Пример в .csproj
:
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
</PropertyGroup>
🛠 Как переключать режимы
Через Visual Studio:
- В верхней панели выбери
Debug
илиRelease
из выпадающего списка. - Жми Ctrl+Shift+B или кнопку "Сборка".
Через CLI:
dotnet build -c Debug
dotnet build -c Release
🎯 Когда использовать какой?
Сценарий | Режим |
---|---|
Разработка и отладка | Debug |
Профилирование | Release |
CI/CD и публикация | Release |
Ведение логов и трассировка | Debug + TRACE |
💡 Совет: .pdb
файлы
.pdb
(Program Database) — файл отладочной информации- Нужен для ошибок с точной строкой, стеков вызова, работы с отладчиком
- Обычно включается в
Debug
, можно включить и вRelease
, если надо отлаживать уже собранное приложение (например, crash dumps)
📌 Закрепим: жизненный цикл сборки
- Вы вызываете
dotnet build
-
MSBuild компилирует:
-
Сначала в
obj/
- Потом собирает в
bin/
- Вы получаете
.exe
или.dll
вbin/{Debug|Release}/
📚 Полезные команды
# Очистить bin/ и obj/
dotnet clean
# Сборка с нужной конфигурацией
dotnet build -c Debug
dotnet build -c Release
# Запустить с конкретной конфигурацией
dotnet run -c Debug