ฉันสร้างโครงการใหม่ใน 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
ไดเรกทอรีเป็นไดเรกทอรีที่ไบนารีผลลัพธ์สุดท้าย (และการอ้างอิงใด ๆ หรือไฟล์ deployable อื่น ๆ ) จะถูกเขียนไป
คุณสามารถเปลี่ยนไดเรกทอรีจริงที่ใช้สำหรับทั้งสองวัตถุประสงค์ภายในการตั้งค่าโครงการหากคุณต้องการ
ข้อเท็จจริงที่น่าสนใจอย่างหนึ่งเกี่ยวกับไดเรกทอรี obj: หากคุณมีการเผยแพร่การตั้งค่าในโครงการเว็บไฟล์ที่จะเผยแพร่จะถูกจัดแสดงเป็น obj \ Release \ Package \ PackageTmp หากคุณต้องการเผยแพร่ไฟล์ด้วยตัวเองแทนที่จะใช้ฟีเจอร์ VS แบบรวมคุณสามารถคว้าไฟล์ที่คุณต้องการนำไปใช้จริงที่นี่แทนที่จะเลือกผ่านเศษดิจิตอลทั้งหมดในไดเรกทอรี bin
ระวังsetup
โครงการถ้าคุณใช้ Visual Studio โครงการติดตั้งPrimary Output
ดึงจากโฟลเดอร์มากกว่าobj
bin
ฉันถูกปล่อยแอพพลิเคผมคิดถูกที่ยุ่งเหยิงและลงนามในmsi
การตั้งค่ามากในขณะที่ก่อนที่ผมค้นพบว่าแฟ้มโปรแกรมประยุกต์ใช้งานเป็นจริงค่า obfuscated มิได้ลงนามในฐานะที่ผมเป็นปฏิบัติตามขั้นตอนการโพสต์สร้างบนbin
ประกอบโฟลเดอร์และควรได้รับการกำหนดเป้าหมายไปยังobj
โฟลเดอร์ ประกอบแทน
มันไกลจาก imho ที่ใช้งานง่าย แต่setup
วิธีการทั่วไปคือการใช้Primary Output
โครงการและนี่คือobj
โฟลเดอร์ ฉันจะรักถ้ามีใครสามารถทำให้กระจ่างใน btw นี้