ฉันจะเปิดใช้งานการแก้ไขไฟล์ในโหมดดีบักของ Visual Studio ได้อย่างไร


144

มีวิธีการเปิดใช้งานการแก้ไขไฟล์ขณะทำการดีบักใน Visual Studio หรือไม่? ฉันไม่ได้เลือกช่องทำเครื่องหมาย "ต้องการไฟล์ต้นฉบับเพื่อให้ตรงกับรุ่นเดิม" มันไม่ต่างอะไรเลย ฉันต้องหยุดแก้ไขจุดบกพร่องเพื่อแก้ไขไฟล์ น่ารำคาญมาก ฉันเปิดใช้งานการแก้ไขและดำเนินการต่อ ผลลัพธ์เดียวกัน ฉันปิดการใช้งานแก้ไขและดำเนินการต่อ - ผลลัพธ์เดียวกัน


ฉันไม่เห็นว่าคุณแก้ไขคำถามของคุณ คุณสามารถแก้ไขได้ด้วยการติดตั้งอย่างรวดเร็ว
Secko

12
@Secko ไม่มีสิ่งเช่น "ติดตั้งอย่างรวดเร็ว" เมื่อเรากำลังพูดถึง Visual Studio ...
Zero3

@ Zero3 มีเวลาของฉันประมาณ 16 ปีก่อนเมื่อฉันใช้มันรอบ ๆ (int) 1999 - (int) 2000 ยังไม่ได้ใช้ในเวลา (ยาว) *
Secko

ปัญหาที่แท้จริงที่นี่คือภาพสตูดิโอ 'แก้ไขและดำเนินการต่อ' การตั้งค่าไม่ได้ช่วยให้คุณสามารถแก้ไขและดำเนินการต่อไป แต่มันเป็นคุณสมบัติแปลก ๆ ที่ให้คุณแก้ไขโค้ดจากนั้นเปลี่ยนรหัสการทำงานเพื่อให้ตรงกับการแก้ไขของคุณและ debugs จากที่นั่น แม้ว่ามันจะมีประโยชน์ แต่ก็ไม่ค่อยได้ผล ควรได้รับการเรียกว่า 'แก้ไขและคอมไพล์ซ้ำได้ทันที' การปิดใช้งานจะช่วยให้คุณสามารถแก้ไขรหัสของคุณได้จริงในขณะที่ยังคงดีบักรหัสที่คุณรวบรวม
MGOwen

คำตอบ:


234

เท่าที่ฉันทราบคุณสามารถยกเลิกการเลือกช่องทำเครื่องหมาย "แก้ไขและดำเนินการต่อ"

เครื่องมือ -> ตัวเลือก -> การดีบัก -> แก้ไขและดำเนินการต่อ> เปิดใช้งานการแก้ไขและดำเนินการต่อ (ยกเลิกการเลือก)


60
นี่เป็นวิธีแก้ปัญหาสำหรับฉัน - ฉันไม่รู้ว่าทำไมการตรวจสอบ UN "แก้ไขและดำเนินการต่อ" จะช่วยให้ฉันแก้ไข ... ดูเหมือน counterintuitive อย่างไรก็ตามฉันจะทำเครื่องหมายสิ่งนี้เป็นคำตอบ
Sam Schutte

7
ตอบโต้ได้ง่าย แต่มีประสิทธิภาพ
Milne

2
สิ่งนี้จะตอบสนองแตกต่างกันหากชั้นธุรกิจถูกแบ่งออกเป็นโครงการแยกต่างหากภายในโซลูชัน ก่อนที่มันจะถูกแบ่งออกฉันสามารถแก้ไขคลาสได้ในขณะที่การดีบักโดยไม่มีปัญหา น่าเสียดายที่การแก้ปัญหานี้ไม่ได้แก้ไขให้ฉันในสถานการณ์นี้ (กำลังใช้ VS2013)
Radderz

18
ใน Visual Studio 2015 ผมพบว่าการตั้งค่านี้ที่ด้านล่างของ->Debugging General
Zero3

13
หากคุณพยายามทำเช่นนี้ แต่ "เปิดใช้งานการแก้ไขและดำเนินการต่อ" เป็นสีเทาเพียงหยุดการดีบักและกลับสู่ตัวเลือกต่างๆ
Ravvy

19

การขยายคำตอบที่ถูกต้องของ Reed

เมื่ออยู่ในโหมดแก้ไขข้อบกพร่องไฟล์จะใช้คุณสมบัติที่เรียกว่า Edit and Continue (ย่อโดยทั่วไป ENC) สิ่งนี้ทำให้ผู้ใช้สามารถเปลี่ยนโปรแกรมของพวกเขาขณะที่กำลังทำงานในการดีบัก

เมื่อเปิดใช้งาน ENC ผู้ใช้จะได้รับอนุญาตให้ทำการแก้ไขชุดที่ จำกัด ในไฟล์ของพวกเขา การดำเนินการถัดไปที่ดำเนินการทำงานของโปรแกรมต่อไป (F10, F5 ฯลฯ ... ) จะทำให้การแก้ไขนั้นถูกนำไปใช้กับโปรแกรมที่กำลังทำงานอยู่ หากสิ่งนี้สำเร็จการดำเนินการของโปรแกรมจะดำเนินการต่อโดยใช้รหัสใหม่

ดีบักเกอร์ไม่อนุญาตให้แก้ไขไฟล์หากไม่ได้เปิดใช้งาน ENC

มีเหตุผลบางประการที่ ENC อาจถูกปิดใช้งานในคอมพิวเตอร์ของคุณ

  • โปรไฟล์บางอย่างไม่เปิดใช้งาน ENC โดยค่าเริ่มต้นและจะต้องเปิดใช้งานอย่างชัดเจน
  • คุณอาจทำงานบนระบบปฏิบัติการ 64 บิตและตั้งค่าแอพ. Net เป็น "Any CPU" ENC ไม่สามารถใช้ได้กับ 64 บิต (ข้อ จำกัด CLR) คุณจะต้องตั้งค่าแอปกลับเป็น x86 เพื่อให้ ENC ทำงานได้

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

1
หากฉันปิดการใช้งาน Edit และ Continue มันจะให้ฉันแก้ไขไฟล์. cs ในขณะที่แอพกำลังทำงานอยู่ แต่มันยังล็อคไฟล์. xaml ฉันกำลังมองหาวิธีที่จะปิดการใช้งานการล็อคไร้สาระทั้งหมดนี้
devios1

7
มันจะไม่ให้ฉันเพิ่มไฟล์ลงในโครงการในขณะที่แอพกำลังทำงานอยู่! ฉันไม่ได้เป็นเด็ก 20-30 ครั้งต่อวันฉันพยายามทำบางสิ่งบางอย่างและ VS ป้องกันไม่ให้มันเกิดขึ้น หลังจากชั่วขณะ "wtf" สั้น ๆ ฉันรู้ว่าแอพกำลังดีบั๊กและฉันต้องหยุดสิ่งที่ฉันทำฆ่าแอพแล้วจึงลองใหม่อีกครั้ง ฉันไม่สามารถทำงานภายใต้เงื่อนไขเหล่านี้และฉันประหลาดใจจริงๆที่ผู้คนไม่ได้อยู่ในอ้อมแขนเกี่ยวกับเรื่องนี้ นี่เป็นการฆ่าผลผลิตของฉันและทำให้ฉันติดกำแพง จะต้องมีวิธีแก้ไขปัญหานี้!
devios1

1
@ devios1 สิ่งที่ฉันทำบ่อยๆคือเรียกใช้โดยไม่มีการดีบั๊ก (ctrl + f5) ซึ่งก็โอเคตราบใดที่คุณไม่ต้องการเบรกพอยต์หรืออะไรก็ตาม
binki

@ devios1 เหมือนกัน ฉันหวังว่าบางคน (บางทีฉัน) จะหาเวลาที่จะขยายส่วนขยายนี้ให้เสร็จ github.com/AndreasFurster/pause-edit-and-continue
Paul

8
  • ตรวจสอบUN "เปิดใช้งานแก้ไขและดำเนินการต่อ" ( Tools -> Options -> Debugging -> Edit and Continue > Enable Edit and Continue)
  • สร้างแอปของคุณ
  • เรียกใช้
  • หยุดนะ.
  • REตรวจสอบ "เปิดใช้งานการแก้ไขและดำเนินการต่อ"
  • สร้างแอปของคุณ
  • เรียกใช้
  • ลองแก้ไขไฟล์ขณะทำการดีบั๊กตอนนี้

สิ่งนี้ใช้ได้สำหรับฉัน ฉันเชื่อว่าอาจเป็นปัญหาข้อผิดพลาดหรือการซิงค์กับ Visual Studio 2015


1
เรียนผู้ลงคะแนนเสียงมันเป็นแนวปฏิบัติที่ดีที่จะแสดงความคิดเห็นว่าทำไมคุณจึงต้องตอบคำถามนี้
Francois Botha

สิ่งนี้ไม่ได้แก้ปัญหาให้กับฉัน แต่คำตอบที่ได้รับการโหวตสูงสุดด้านล่างทำได้
Kairan

6

แต่คุณต้องเปิดการใช้งานแก้ไขและดำเนินการต่อ


2
นอกจากนี้คุณต้องอยู่ที่เบรกพอยต์หรือคลิกปุ่มหยุด (หยุดทั้งหมด)
McAden

@marcc: และอีกหลายสิ่งซึ่งเป็นเหตุผลที่ฉันชี้ไปที่เอกสาร สำหรับรายการการเปลี่ยนแปลงที่ไม่สนับสนุนทั้งหมดให้ดูส่วน "สถานการณ์ที่ไม่สนับสนุน" ที่ตำแหน่งนี้: msdn.microsoft.com/en-us/library/ms164927%28VS.80%29.aspx
Reed Copsey

4
Seckos (คำตอบที่ดีที่สุด) ได้ผลสำหรับฉัน (VS2015) และตรงข้ามกับคำตอบของคุณ
alrts

6

จาก MSDN

เพื่อเปิด / ปิดการแก้ไขและดำเนินการต่อ

  • เปิดหน้าตัวเลือกการแก้ไขข้อบกพร่อง (เครื่องมือ / ตัวเลือก / การดีบัก) เลื่อน

  • ลงไปที่หมวดแก้ไขและดำเนินการต่อ หากต้องการเปิดใช้งานให้เลือกเปิดใช้งานการแก้ไข

  • และทำเครื่องหมายในช่องทำเครื่องหมาย หากต้องการปิดใช้งานให้ล้างกล่องกาเครื่องหมาย บันทึก. ...

  • คลิกตกลง


5

โดยปกติการแก้ไขไฟล์ในระหว่างการดีบักจะเกิดขึ้นได้เมื่อคุณกดเบรกพอยต์ (และหลังจากนั้น)

มีข้อ จำกัด บางประการดังนี้: - รหัสใหม่ของคุณจะต้องรวบรวม - คุณไม่สามารถเปลี่ยนรหัสในฟังก์ชั่นที่มีการแสดงออกแลมบ์ดา



2

หากคุณเปิดใช้งานการแก้ไขและดำเนินการต่อและคุณใช้ C # คุณจะสามารถแก้ไขไฟล์ได้เฉพาะเมื่อโปรแกรมดีบั๊กหยุดทำงานผ่านจุดพักหรือคุณแบ่งแอปด้วยตนเองผ่าน คุณยังคงไม่สามารถแก้ไขไฟล์บางไฟล์เช่น ไฟล์ xaml ในแอป WPF แต่ควรแก้ไขปัญหาส่วนใหญ่


1

หากต้นกำเนิดของคุณมาจาก dll ที่คอมไพล์แล้วโปรดทราบว่า decompilers อาจเพิ่มคำสั่ง IgnoreSymbolStoreSequencePoints ไปที่ assemblyinfo.cs:

[ชุดประกอบ: Debuggable (DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]

บรรทัดนี้จะต้องลบออกเพื่อที่จะโหลดไฟล์ pdb ทำให้การแก้ไขและทำงานต่อไป


1

การลบเครื่องหมายที่ด้านล่างตัวเลือกใช้งานได้สำหรับฉัน

เครื่องมือ> ตัวเลือก> การดีบัก> ทั่วไป> เปิดใช้งานการแก้ไขและดำเนินการต่อ

ป้อนคำอธิบายรูปภาพที่นี่

* หมายเหตุ: ที่ระบบนักพัฒนาระบบเพื่อนบางคนการเพิ่มติ๊กนี้เป็นการหลอกลวง


1

ฉันลองด้วยวิธีนี้และมันใช้งานได้สำหรับฉัน ไปที่ไฟล์ CSProj หรือ VbProj -> เลือก Asp.Net Development Server / IIS Express -> Debuggers-> เปิดใช้งาน Edit และ Continue-> Save and Run

ป้อนคำอธิบายรูปภาพที่นี่

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