Відповіді:
У 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папка. Мені б подобалося, якби хтось міг пролити світло на цю дорогу.