Я создал новый проект в Visual Studio 2010 и заметил, что теперь есть две новые папки с именем obj
и bin
в моем каталоге проектов.
Подобная пара папок создается при сборке и отладке - для чего эти папки?
источник
Я создал новый проект в Visual Studio 2010 и заметил, что теперь есть две новые папки с именем obj
и bin
в моем каталоге проектов.
Подобная пара папок создается при сборке и отладке - для чего эти папки?
obj
Папка имеет объект, или промежуточный, файлы , которые компилируются двоичные файлы, которые не были связаны еще. По сути, это фрагменты, которые будут объединены для создания окончательного исполняемого файла. Компилятор генерирует один объектный файл для каждого исходного файла, и эти файлы помещаются в obj
папку.
bin
Папка имеет двоичные файлы , которые являются фактическим исполняемым кодом приложения или библиотеки.
Каждая из этих папок подразделяется на папки Debug
и Release
папки, которые просто соответствуют конфигурациям сборки проекта. Обсуждаемые выше два типа файлов помещаются в соответствующую папку, в зависимости от того, какой тип сборки вы выполняете. Это позволяет вам легко определить, какие исполняемые файлы созданы с использованием символов отладки, а какие были созданы с включенными оптимизациями и готовы к выпуску.
Обратите внимание, что вы можете изменить место, где Visual Studio выводит ваши исполняемые файлы во время компиляции, в свойствах вашего проекта. Вы также можете изменить имена и выбранные параметры для ваших конфигураций сборки.
obj
Действительно ли содержат только несвязанные файлы объектного кода? По моему опыту, он содержит все из них, и на последнем этапе сборки файлы, которые являются частью "окончательного набора", копируются вbin
.Я бы посоветовал вам посмотреть это видео на YouTube, которое демонстрирует разницу между папками C # bin и obj, а также объясняет, как мы получаем преимущество от инкрементной / условной компиляции.
Компиляция C # представляет собой двухэтапный процесс, для получения более подробной информации см. Диаграмму ниже:
Если вы сравните каталог bin и obj, вы найдете большее количество файлов в каталоге obj, так как в нем есть отдельные файлы скомпилированного кода, в то время как «bin» состоит из одного модуля.
источник
obj
Каталог для промежуточных объектных файлов и других временных файлов данных, которые генерируются системой компилятора или сборки во время сборки.bin
Каталог каталог, конечные выходные файлы (и любые зависимости или другие развертываемых файлы) будут записаны.При желании вы можете изменить фактические каталоги, используемые для обеих целей в настройках проекта.
источник
Один интересный факт о каталоге obj: если вы настроили публикацию в веб-проекте, файлы, которые будут опубликованы, размещаются в obj \ Release \ Package \ PackageTmp. Если вы хотите публиковать файлы самостоятельно, а не использовать встроенную функцию VS, вы можете взять файлы, которые вам действительно нужно развернуть, здесь, а не собирать весь цифровой мусор в каталоге bin.
источник
Будьте осторожны с
setup
проектами, если вы их используете; Проекты установки Visual StudioPrimary Output
тянут изobj
папки, а не изbin
.Я выпускал приложения, которые, по моему мнению, были запутаны и подписаны в
msi
настройках в течение достаточно долгого времени, прежде чем я обнаружил, что файлы развернутых приложений на самом деле не были ни запутаны, ни подписаны, поскольку я выполнял процедуру пост-сборки дляbin
сборок папки и должен был ориентироваться наobj
папку сборки вместо.Это далеко не интуитивно понятно imho, но общий
setup
подход заключается в использованииPrimary Output
проекта, а этоobj
папка. Я был бы рад, если бы кто-то мог пролить свет на это, кстати.источник