อะไรคือความแตกต่างระหว่างเพียงแค่การสร้างใหม่และการทำClean + Buildใน Visual Studio 2008 มีการทำความสะอาด + รูปร่างที่แตกต่างกันแล้วทำสะอาด + สร้าง ?
อะไรคือความแตกต่างระหว่างเพียงแค่การสร้างใหม่และการทำClean + Buildใน Visual Studio 2008 มีการทำความสะอาด + รูปร่างที่แตกต่างกันแล้วทำสะอาด + สร้าง ?
คำตอบ:
สร้างใหม่ = Clean + Build (โดยปกติ)
รายละเอียดที่น่าสังเกต:
สำหรับโซลูชันที่มีหลายโครงการ "การสร้างโซลูชันใหม่" จะ "ทำความสะอาด" ตามด้วย "การสร้าง" สำหรับแต่ละโครงการ (อาจเป็นแบบขนาน) ในขณะที่ "วิธีการแก้ปัญหาที่สะอาด" ตามด้วย "การสร้างโซลูชัน" ก่อนทำความสะอาดทุกโครงการ (อาจขนาน) และสร้างโครงการทั้งหมด (อาจขนาน) ความแตกต่างในการเรียงลำดับเหตุการณ์สามารถกลายเป็นเรื่องสำคัญเมื่อการพึ่งพาระหว่างโครงการเข้ามามีบทบาท
การกระทำทั้งสามสอดคล้องกับเป้าหมายของ MSBuild ดังนั้นโครงการสามารถแทนที่การดำเนินการ Rebuild เพื่อทำสิ่งที่แตกต่างอย่างสิ้นเชิง
Earl นั้นถูกต้องที่ 99% ของเวลาที่สร้างใหม่ = Clean + Build
แต่พวกเขาไม่รับประกันว่าจะเหมือนกัน การกระทำ 3 รายการ (สร้างใหม่สร้างใหม่ทั้งหมด) หมายถึงเป้าหมาย MSBuild ที่แตกต่างกัน ซึ่งแต่ละไฟล์สามารถถูกแทนที่ด้วยไฟล์โปรเจ็กต์เพื่อทำการกระทำที่กำหนดเอง ดังนั้นจึงเป็นไปได้สำหรับบางคนที่จะแทนที่การสร้างใหม่เพื่อดำเนินการหลายอย่างก่อนที่จะเริ่มต้นการสร้าง + การสร้างใหม่ทั้งหมด (หรือเพื่อลบทั้งหมด)
กรณีมุมมาก แต่ชี้ให้เห็นเนื่องจากการอภิปรายแสดงความคิดเห็น
มากำหนดการสร้าง Rebuild ที่เป็นค่าเริ่มต้นในแง่ของการใช้ Clean and Build ที่เป็นค่าเริ่มต้น:
ต่อโครงการ: สร้างโครงการ = ล้างโครงการ + สร้างโครงการ
วิธีแก้ปัญหา: สร้างใหม่ sln = foreach project ใน sln (ล้างโครงการ + สร้างโครงการ)
โปรดทราบว่าเนื่องจากความแตกต่างในลำดับของการดำเนินการ Rebuild sln ไม่เหมือนกับ (Clean sln + Build sln) = (โครงการ foreach ในโครงการ sln Clean project) + (โครงการ foreach ในโครงการ sln Build) นอกจากนี้ "foreach" นี้อาจทำงานพร้อมกันดังนั้นจึงอนุญาตให้ใช้งานที่แตกต่างกันในการทำงานพร้อมกันในสองสถานการณ์
สมมติว่าคุณมี sln ที่มี proj1, proj2 และ proj3
สร้าง sln = (Clean proj1 + Build proj1) & (Clean proj2 + Build proj2) & (Clean proj3 + Build proj3)
Clean Sln + Build Sln = (ทำความสะอาดผลิตภัณฑ์และล้าง proj2 และ Clean proj3) + (Build proj1 & Build proj2 & Build proj3)
+ หมายถึงอนุกรมและหมายถึงพร้อมกัน
ดังนั้นหากการอ้างอิงโครงการไม่ได้รับการกำหนดค่าอย่างถูกต้องมีโอกาสที่เมื่อคุณดำเนินการสร้างใหม่ sln บางโครงการของคุณเชื่อมโยงไปยัง lib เก่า นั่นเป็นเพราะการล้างทั้งหมดไม่ได้รับประกันว่าจะเสร็จก่อนที่จะเริ่มสร้างครั้งแรก หากคุณดำเนินการ Clean sln + Build sln พวกเขาจะให้ข้อผิดพลาดในการเชื่อมโยงและแจ้งให้คุณทราบทันทีแทนที่จะให้แอปที่มีพฤติกรรมแปลก ๆ
จากhttp://www.cs.tufts.edu/r/graphics/resources/vs_getting_started/vs_getting_started.htm (เพิ่ง googled)
Build หมายถึงการคอมไพล์และลิงก์เฉพาะไฟล์ต้นฉบับที่มีการเปลี่ยนแปลงนับตั้งแต่บิลด์ครั้งสุดท้ายขณะที่ Rebuild หมายถึงการคอมไพล์และลิงก์ไฟล์ต้นฉบับทั้งหมดโดยไม่คำนึงว่าไฟล์นั้นมีการเปลี่ยนแปลงหรือไม่ Build เป็นสิ่งปกติที่ต้องทำและเร็วกว่า บางครั้งเวอร์ชันขององค์ประกอบเป้าหมายของโครงการสามารถหลุดจากการซิงค์และการสร้างใหม่เป็นสิ่งที่จำเป็นเพื่อทำให้การสร้างสำเร็จ ในทางปฏิบัติคุณไม่จำเป็นต้องทำความสะอาด
สร้างหรือสร้างโซลูชันใหม่สร้างหรือสร้างโครงการทั้งหมดในโซลูชันของคุณในขณะที่สร้างหรือสร้างใหม่สร้างหรือสร้างโครงการเริ่มต้นใหม่ "สวัสดี" ในภาพหน้าจอด้านบน ในการตั้งค่าโครงการเริ่มต้นให้คลิกขวาที่ชื่อโครงการที่ต้องการในแท็บโซลูชัน Explorer และเลือกตั้งเป็นโครงการเริ่มต้น ชื่อโครงการจะปรากฏเป็นตัวหนา เนื่องจากโดยทั่วไปโซลูชันการบ้านจะมีเพียงโครงการเดียวเท่านั้น Build หรือ Rebuild Solution จึงมีประสิทธิภาพเหมือนกับ Build หรือ Rebuild
คอมไพล์เพียงรวบรวมไฟล์ต้นฉบับที่กำลังแก้ไขอยู่ มีประโยชน์ในการตรวจสอบข้อผิดพลาดอย่างรวดเร็วเมื่อไฟล์ต้นฉบับส่วนที่เหลือของคุณอยู่ในสถานะไม่สมบูรณ์ซึ่งจะช่วยป้องกันการสร้างโครงการที่ประสบความสำเร็จทั้งหมด Ctrl-F7 เป็นปุ่มลัดสำหรับการคอมไพล์
จากโพสต์บล็อกนี้ซึ่งผู้เขียนเชื่อมโยงเป็นความคิดเห็นในคำถามนี้ :
ไม่จริง !!! พวกเขาไม่เท่ากัน
ความแตกต่างคือในลำดับโครงการทำความสะอาดและสร้าง สมมติว่าเรามีสองโครงการในโซลูชัน ทำความสะอาดแล้วสร้างจะดำเนินการทำความสะอาดกับทั้งสองโครงการแล้วสร้างจะเกิดขึ้นเป็นรายบุคคลในขณะที่โครงการสร้างใหม่จะได้รับและทำความสะอาดแล้วสร้างหลังจากโครงการ B จะสะอาดแล้วสร้างและอื่น ๆ