Каковы файлы obj и bin (созданные Visual Studio)? - программирование

Каковы файлы obj и bin (созданные Visual Studio)?

Я создал новый проект в Visual Studio 2010 и заметил, что в моей директории проектов теперь есть две новые папки с именем obj и bin.

Аналогичная пара папок создается при построении и отладке - для чего эти папки?

4b9b3361

Ответ 1

В папке obj хранится объект или промежуточный файл, которые являются скомпилированными двоичными файлами, которые еще не были связаны. Это, по сути, фрагменты, которые будут объединены для создания окончательного исполняемого файла. Компилятор создает один объектный файл для каждого исходного файла, и эти файлы помещаются в папку obj.

В папке bin хранятся двоичные файлы, которые являются фактическим исполняемым кодом для вашего приложения или библиотеки.

Каждая из этих папок далее подразделяется на папки Debug и Release, которые просто соответствуют конфигурациям сборки проекта. Два типа файлов, описанных выше, помещаются в соответствующую папку, в зависимости от того, какой тип сборки вы выполняете. Это позволяет легко определить, какие исполняемые файлы создаются с помощью отладочных символов и которые были созданы с включенными и готовыми к выпуску оптимизациями.

Обратите внимание, что вы можете изменить, где Visual Studio выводит исполняемые файлы во время компиляции в свойстве проекта. Вы также можете изменить имена и выбранные параметры для своих конфигураций сборки.

Ответ 2

Каталог obj предназначен для промежуточных файлов объектов и других файлов временных данных, которые генерируются системой компилятора или сборки во время сборки. Каталог bin - это каталог, в который будут записываться окончательные выходные двоичные файлы (и любые зависимости или другие файлы для развертывания).

Вы можете изменить фактические каталоги, используемые для обеих целей в рамках параметров проекта, если хотите.

Ответ 3

Один интересный факт об каталоге obj: если у вас есть публикация, настроенная в веб-проекте, файлы, которые будут опубликованы, будут поставлены в obj\Release\Package\PackageTmp. Если вы хотите публиковать файлы самостоятельно, а не использовать встроенную функцию VS, вы можете захватить файлы, которые вам действительно нужны для развертывания здесь, а не выбирать все цифровые мусора в каталоге bin.

Ответ 4

Я бы посоветовал вам увидеть это видео на YouTube, которое демонстрирует разницу между С# bin и obj folders, а также объясняет, как мы получаем выгоду от инкрементная/условная компиляция.

Компиляция С# представляет собой двухэтапный процесс, см. ниже диаграмму для более подробной информации: -

  • Компиляция: - На этапе компиляции отдельные файлы кода С# скомпилируются в отдельные скомпилированные единицы. Эти отдельные скомпилированные файлы кода находятся в каталоге OBJ.
  • Связывание: - В фазе связывания эти отдельные скомпилированные файлы кода связаны с созданием единичных DLL и EXE. Это происходит в каталоге BIN.

С# bin vs obj folders

Если вы сравниваете каталог bin и obj, вы найдете больше файлов в каталоге "obj", поскольку у него есть отдельные скомпилированные файлы кода, в то время как "bin" имеет один блок.

bin vs obj