Відповіді:
У obj
папці містяться об'єктивні або проміжні файли , які є компільованими бінарними файлами, які ще не пов'язані. Вони по суті є фрагментами, які будуть об'єднані для отримання остаточного виконуваного файлу. Компілятор генерує один об’єктний файл для кожного вихідного файлу, і ці файли поміщаються в obj
папку.
У bin
папці містяться двійкові файли , які є фактичним виконуваним кодом для вашої програми чи бібліотеки.
Кожна з цих папок підрозділяються на Debug
і Release
папки, які просто відповідають конфігурації збірки проекту. Розглянуті вище два типи файлів поміщаються у відповідну папку, залежно від того, який тип складання ви виконуєте. Це дозволяє вам легко визначити, які виконувані файли створені за допомогою налагоджувальних символів, а які були створені з увімкненими оптимізаціями та готовими до випуску.
Зауважте, що ви можете змінити, де Visual Studio видає ваші виконувані файли під час компіляції у Властивості вашого проекту. Ви також можете змінити імена та вибрані параметри для своїх конфігурацій побудови.
obj
дійсно містять лише непов'язані файли коду об'єкта? З мого досвіду, вони містять усі вони, і на завершальному етапі збирання файли, що входять до "остаточного набору", копіюються в bin
.
Я б закликав вас переглянути це відео на YouTube, яке демонструє різницю між папками C # bin та obj а також пояснює, як ми отримуємо перевагу від додаткової / умовної компіляції.
Компіляція C # - це двоетапний процес, докладнішу інформацію див. Нижче.
Якщо порівнювати і каталог bin та obj, ви знайдете більшу кількість файлів у каталозі "obj", оскільки в ньому є окремі складені файли коду, тоді як "bin" має єдину одиницю.
obj
Каталог для проміжних об'єктних файлів і інших тимчасових файлів даних, які генеруються системою компілятора або збірки в процесі побудови. Thebin
Каталог каталог, кінцеві вихідні файли (і будь-які залежності або інші розгорнутих файли) будуть записані.
Якщо ви хочете, ви можете змінити фактичні каталоги, які використовуються для обох цілей у налаштуваннях проекту.
Один цікавий факт про каталог obj: Якщо ви розмістили публікацію у веб-проекті, файли, які будуть опубліковані, ставляться до obj \ Release \ Package \ PackageTmp. Якщо ви хочете опублікувати файли самостійно, а не використовувати інтегровану функцію VS, ви можете захопити файли, які вам фактично потрібно розгорнути тут, а не пробирати всі цифрові сміття в каталозі бін.
Будьте обережні з setup
проектами, якщо ви їх використовуєте; Проекти налаштування Visual Studio Primary Output
витягуються з obj
папки, а не зbin
.
Я випускав програми, які, на мою думку, були затуманені та підписані в msi
налаштуваннях досить довгий час, перш ніж я виявив, що розгорнуті файли додатків насправді не були затуманені та не підписані, як я виконую процедуру після збирання на bin
складах папок і повинен був орієнтуватися наobj
папку замість цього збірки.
Це далеко не інтуїтивно зрозуміло, але загальним setup
підходом є використання Primary Output
проекту, і це obj
папка. Мені б подобалося, якби хтось міг пролити світло на цю дорогу.