Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

โฟลเดอร์ bin และ obj ใน C# คืออะไร ต่างกันอย่างไร

เมื่อเขียนโค้ด C# แล้ว Build หรือ Run Solution จะสร้างโฟลเดอร์ 2 ตัวคือ bin และ obj ทั้งคู่เก็บ Compiled Code แต่หน้าที่ต่างกัน

ทำไมต้องมี 2 โฟลเดอร์?

กระบวนการ Compile ผ่าน 2 ขั้นตอน:

  1. Compiling: คอมไพล์แต่ละไฟล์เป็น Unit แยกต่างหาก → เก็บใน obj
  2. Linking: รวม Units ทั้งหมดเป็น DLL หรือ EXE เดียว → เก็บใน bin

รายละเอียดแต่ละโฟลเดอร์

obj (Intermediate Output)

  • เก็บไฟล์ Compile ระหว่างทาง (Intermediate files)
  • แต่ละ Project มี obj ของตัวเอง
  • ใช้สำหรับ Incremental Compilation - Compile เฉพาะไฟล์ที่เปลี่ยนแปลง
  • ตัวอย่าง: โปรเจกต์ใหญ่หลายไฟล์ แก้ไขแค่ 1 ไฟล์ → Compile แค่ไฟล์นั้น → obj เก็บข้อมูลนี้

bin (Final Output)

  • เก็บ Assembly ตัวจริง (.dll หรือ .exe) พร้อม Dependencies
  • เป็น Output สุดท้ายที่ Deploy/Run ได้
  • มี Subfolder: Debug\net6.0\, Release\net6.0\ ตาม Framework และ Config

สรุปความแตกต่าง

คุณสมบัติobjbin
ขั้นตอนCompiling (ระหว่างทาง)Linking (ผลลัพธ์สุดท้าย)
เนื้อหาObject files, Temp filesDLL/EXE, Dependencies
Incremental Buildสำคัญมากไม่เกี่ยวข้อง
Deployไม่ต้อง DeployDeploy โฟลเดอร์นี้

เคล็ดลับ

  • ลบ bin และ obj แล้ว Build ใหม่ (Clean Build) แก้ปัญหา Cache เก่าได้
  • dotnet clean ลบทั้งคู่ให้อัตโนมัติ