เหตุใด IDE ของฉันจึงไม่รวบรวมพื้นหลัง / สิ่งปลูกสร้าง


13

วันนี้ฉันพัฒนาบนคอมพิวเตอร์ที่ค่อนข้างซับซ้อนมันมีหลายคอร์ไดรฟ์ SSD และสิ่งที่ไม่ ยังคงส่วนใหญ่เวลาฉันเขียนโปรแกรมคอมพิวเตอร์ไม่สบายทำอะไร เมื่อฉันต้องการคอมไพล์และรัน / ปรับใช้โครงการที่ค่อนข้างซับซ้อนที่สุดก็ยังคงใช้เวลาสองสามวินาที ทำไม? ตอนนี้เรากำลังมีชีวิตอยู่มากขึ้นเรื่อย ๆ ใน "อายุทันที" ทำไมฉันไม่สามารถกด F5 ใน Visual Studio และเปิด / ปรับใช้แอปพลิเคชันของฉันได้ทันที

สองสามวินาทีอาจไม่ฟังดูแย่นัก แต่ก็ยังมีความเสียดทานทางปัญญาและเวลาที่เพิ่มขึ้นและตรงไปตรงมาทำให้การเขียนโปรแกรมสนุกน้อยลง ดังนั้นการรวบรวมได้อย่างไรในทันที?

คนเรามักจะแก้ไขไฟล์ในแอสเซมบลีต่าง ๆ จะเกิดอะไรขึ้นถ้า Visual Studio / The IDE ทำการคอมไพล์ / และสร้างทุกสิ่งที่ฉันแก้ไขตลอดเวลาเพื่อให้เหมาะสม Heck ถ้าพวกเขาต้องการที่จะก้าวไปข้างหน้าจริงๆพวกเขาสามารถรวบรวมต่อชั้น การรวบรวมอาจไม่ทำงาน แต่ก็ไม่สามารถทำอะไรได้อย่างเงียบ ๆ (ยกเว้นการเพิ่มข้อความแสดงข้อผิดพลาดในหน้าต่างข้อผิดพลาด)

คอมพิวเตอร์ในปัจจุบันแน่นอนสามารถอุทิศหลักหรือสองในงานนี้และถ้ามีคนพบว่ามันน่ารำคาญมันอาจถูกปิดการใช้งานโดยตัวเลือก ฉันรู้ว่าอาจมีปัญหาทางเทคนิคหลายพันรายการและการคัดลอกเงาแฟนซีที่จะต้องได้รับการแก้ไขเพื่อให้ราบรื่นและใช้งานได้จริง แต่จะทำให้การเขียนโปรแกรมราบรื่นยิ่งขึ้น

มีเหตุผลจริงหรือไม่ที่สถานการณ์นี้ไม่สามารถเกิดขึ้นได้? การสึกหรอของไบนารีที่เขียนต่อเนื่องจะมากเกินไปหรือไม่ แอสเซมบลีไม่สามารถเก็บไว้ในหน่วยความจำจนกว่าจะมีการปรับใช้ / รัน


Visual Studio ทำเพื่อ vb.net และอย่างน้อยก็บางส่วนสำหรับ c # นี่เป็นจุดหนึ่งในการอภิปรายนิรันดร์ c # / vb.net: codinghorror.com/blog/2007/06/…
Matthieu

ใช่ฉันดูที่บทความนั้น ที่ส่วนใหญ่อยู่ในบริบทของการแยกวิเคราะห์ / รวบรวมข้อความแสดงข้อผิดพลาดและไม่มากสำหรับการใช้งานทันที / ใช้งานแอปพลิเคชัน
Homde

@ Konrad, VB.NET ไม่ได้มีการรวบรวมพื้นหลัง?
Pacerier

คำตอบ:


6

Eclipse ทำการรวบรวมและสร้างโดยอัตโนมัติ คุณอาจต้องการตรวจสอบวิธีที่พวกเขาทำ มันเป็นโอเพนซอร์ส ฉันคิดว่ามันรวบรวมทุกครั้งที่คุณบันทึกไฟล์


1
ไชโยคราส!
MattC

เยี่ยมมากทุกคนใช้มัน? มันสร้างความแตกต่าง?
Homde

2
มันทำให้แตกต่างกันมาก. และมันมีประโยชน์อย่างมากสำหรับการเขียนโปรแกรมอย่างรวดเร็ว - มันสามารถสร้างวิธีการประกาศโดยการโทรที่คุณเขียนบน fly.I ใช้มันมานานหลายปีจากการพัฒนาแอปพลิเคชันจาวาไปจนถึงแอพพลิเคชั่น Web 2.0 บนพื้นฐานของจาวา และ C ++), PERL และ Python มีปลั๊กอินสำหรับเกือบทุกภาษาเท่าที่จะเป็นไปได้
Brian

6

คุณเคยคิดบ้างไหมว่ามีการกดแป้นจำนวนกี่ครั้งก่อนที่คุณจะรับไฟล์ไปยังสถานะที่สามารถรวบรวมได้? ดูสิ่งที่จะเกิดขึ้นอย่างจริงจังหากคุณพยายามรวบรวม class f, class fo, class foo และอื่น ๆ เมื่อใดที่คุณต้องการให้ IDE บอกให้คุณแก้ไขการพิมพ์ผิดกับเพิ่งพิมพ์เสร็จหนึ่งครั้ง? ฉันถามว่าคุณคิดอย่างไรดีในการสร้างบางสิ่งบางอย่างตั้งแต่เริ่มต้นซึ่งเป็นที่ที่ฉันสามารถเห็นสิ่งนี้เจ็บปวดมากจริงๆ


ฉันไม่แนะนำให้คอมไพล์ไฟล์ / คลาสที่ฉันกำลังแก้ไขอยู่จริง แต่แอสเซมบลีอื่น ๆ ที่ฉันได้แก้ไขควรเป็นเกมที่ยุติธรรมและคลาสอื่น ๆ ในแอสเซมบลีเดียวกันเช่นกันถ้าคุณสามารถดึงออกการคอมไพล์บางส่วน (ซึ่งอาจเป็นงานที่ซับซ้อน) อาจมีปัญหาบางอย่างเกี่ยวกับการแก้ไขการอ้างอิง แต่มันไม่ควรจะผ่านไม่ได้ นอกจากนี้กรณีที่เลวร้ายที่สุดคือมันรวบรวมตามปกติตราบใดที่การรวบรวมเธรดไม่ชะงักอินเตอร์เฟซหรือคอมพิวเตอร์มากเกินไปก็ไม่น่าจะเป็นปัญหามากนัก
Homde

2

Visual Studio ไม่ได้ให้ความสะดวกในการรวบรวมข้อมูลอัตโนมัติ แต่ใช่บางอย่างเช่น Eclipse จะทำการรวบรวมอัตโนมัติเมื่อคุณบันทึกไฟล์ใด ๆ หวังใน Visual Studio รุ่นอนาคต Microsoft จะเพิ่มคุณสมบัตินี้


1

คาดเดาสิ่งที่ ... หากคุณกำลังใช้ IDE สมัยใหม่ที่ให้คำเตือนคุณกำลังทำการรวบรวมพื้นหลัง นั่นเป็นวิธีที่จะรู้ว่ารายการเหล่านั้นจะไม่รวบรวมเช่นเดียวกับ


7
มันทำพื้นหลังแยก นั่นไม่ใช่การรวบรวมแบบเต็ม
Mason Wheeler

ใช่แน่นอน แต่ดูเหมือนว่าพวกเขาหยุดขั้นตอนสั้น ๆ หากการรวบรวม / การแยกวิเคราะห์เสร็จสิ้นแล้วทำไมไม่ลองใช้วิธีทั้งหมดและใช้มันในกระบวนการ build / run
Homde

1
@MKO: AFAIK ใน IDEs จำนวนมากต้นไม้การแยกวิเคราะห์จะใช้ในกระบวนการสร้าง (แทนการแยกวิเคราะห์คอมไพเลอร์อีกครั้ง) หากแหล่งที่มาไม่ได้เปลี่ยนไปตั้งแต่ถูกสร้างขึ้น
อานนท์

1

คุณสามารถแยกโครงการเป็นส่วนประกอบที่คอมไพล์แล้วได้เสมอ ฉันชอบคอมไพล์ของคอมพิวเตอร แรงเสียดทานทางปัญญาของชายคนหนึ่งเป็นเวลาสำหรับการสะท้อนและรับกาแฟของอีกคน


1

ถ้าคุณใช้ Visual Studio และพัฒนาใน c # หรือ VB Reshaper สามารถทำเพื่อคุณ http://www.jetbrains.com/resharper/ ฉันประหยัดเวลาได้มากด้วยการรู้สถานที่ทั้งหมดที่การเปลี่ยนแปลงของฉันไปยังอินเทอร์เฟซทำให้รหัสแตกโดยไม่ต้องคอมไพล์ใหม่ด้วยตนเอง

(เช่นกันฉันคิดว่า Resharper ก็น่าเบื่อด้วยเหตุผลอื่น ๆ อีกมากมาย)


ฉันถือว่าคุณหมายถึง reSharper จะบอกคุณเกี่ยวกับข้อผิดพลาดในการรวบรวม เท่าที่ฉันทราบมันจะไม่สร้างไบนารีสำหรับคุณ
thelem

1

ฉันไม่รู้ฉันต้องการรวบรวมสิ่งต่างๆ มันเป็นเรื่องของฉันที่ใช้รหัสของฉันและบอกคอมพิวเตอร์ว่า " ฮ่า! เรามาดูกันคุณปฏิเสธเรื่องนี้! "

จากนั้นฉันได้รับข้อผิดพลาดในการคอมไพล์แก้ไขมันแล้ว " ฮะ! ตอนนี้เรามาดูกันว่าคุณปฏิเสธสิ่งนี้! "

จากนั้นก็รวบรวมและฉันหยิบกาแฟ ความรู้สึกที่ดี. :)


รู้สึกดี ..... ยกเว้นเมื่อคุณต้องทำอย่างนั้น 6500 ครั้งในหนึ่งวัน
Pacerier

0

หมายเหตุ: สิ่งนี้นำมาจากประสบการณ์ของฉันกับ Netbeans (Java) ดังนั้นสิ่งนี้อาจใช้ไม่ได้กับ Visual Studio

TMK จะทำในพื้นหลังบ้างเมื่อคุณเริ่มแก้ไขไฟล์ เว้นแต่ว่า IDE รู้ข้อผิดพลาดในการรวบรวมทุกครั้งและวิธีการตรวจสอบฉันจะสมมติว่ามันรวบรวมชั้นเรียนในพื้นหลังแล้วรายงานข้อผิดพลาดใด ๆ

ปัญหาคือเมื่อคุณต้องการสร้างโครงการทั้งหมดของคุณ บางครั้งฉันเดาว่าไม่ใช่ข้อผิดพลาดทั้งหมดที่อาจเกิดขึ้นกับการคอมไพล์ "สด" นี้ดังนั้นมันจึงสร้างขึ้นใหม่ทุกอย่าง อาจเป็นไปได้ว่าคลาสที่คอมไพล์สดมีข้อมูลเพิ่มเติมที่ IDE ต้องการ แต่ไม่ควรแจกจ่ายในไบนารี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.