“ เบรกพอยต์จะไม่ถูกโจมตีในขณะนี้ ซอร์สโค้ดแตกต่างจากเวอร์ชั่นดั้งเดิม” สิ่งนี้หมายความว่า?


513

เมื่อทำการดีบั๊กใน Visual Studio บางครั้งฉันเพิ่มเบรกพอยต์ แต่มันกลวงและ VS บอกว่า "เบรกพอยต์จะไม่ถูกโจมตีในขณะนี้ซอร์สโค้ดแตกต่างจากเวอร์ชั่นเดิม" เห็นได้ชัดว่านี่ทำให้ฉันไม่สามารถดีบักได้

ข้อความบนโลกนี้มีความหมายว่าอย่างไร? รุ่นเดิมคืออะไร? หากฉันเพิ่งเปิดโซลูชันและไม่ทำการเปลี่ยนแปลงใด ๆ กับรหัสใด ๆ จะมี 'รุ่นดั้งเดิม' ได้อย่างไร


36
คอมไพล์อีกครั้ง / สร้างโครงการก่อนเพิ่มจุดพัก
lexu

คุณกำลังเปิดโครงการที่เขียนใน Visual Studio เวอร์ชันอื่นหรือไม่
Mahesh Velaga

2
มันเป็นโครงการเว็บไซต์ ไม่จำเป็นต้องสร้างอย่างชัดเจน มันควรจะรวบรวมในการใช้งาน ฉันสงสัยว่า VS ไม่สามารถสร้างเว็บไซต์ได้ แต่มันไม่ได้บอกฉันว่า! Mahesh - ไม่ VS ทุกเวอร์ชั่นเดียวกัน
David

ในกรณีของฉัน .. ฉันมีรุ่นที่แตกต่างกันของรหัสเดียวกัน (ตัวอย่างเช่น test.cs ในรุ่น Live และรุ่น devolopment .. เมื่อฉันเปิดรุ่น devolopment และวางเบรกพอยต์บน test.cs ได้รับข้อผิดพลาดเดียวกัน แต่ฉันคิดว่าฉันใส่จุดทดสอบ . cs class ที่เกี่ยวข้องกับ live version sln ไม่ใช่ devolopment ดังนั้นตรวจสอบ cs ที่มีอยู่แล้วในการแก้ปัญหาการสร้าง)
dankyy1

5
การลบไดเรกทอรี bin และ obj กว่าการสร้างใหม่ใช้งานได้สำหรับฉัน
Aycan Yaşıt

คำตอบ:


277

ตามที่ระบุไว้ "ซอร์สโค้ดแตกต่างจากเวอร์ชันดั้งเดิม"

Cleanคลิกขวาที่โฟลเดอร์โครงการภายในสำรวจการแก้ปัญหาและเลือกที่จะ สร้างเวอร์ชันใหม่ของโครงการและเบรกพอยต์จะทำงานอีกครั้ง!


120
การใช้คลีนไม่ได้ผลเสมอไป ฉันต้องลบทุกอย่างในโฟลเดอร์ bin ด้วยตนเองเพื่อให้มันทำงานอีกครั้ง
Carra

3
ฉันมีการอ้างอิงถึง DLL ในโฟลเดอร์ถังขยะโดยไม่ตั้งใจ แก้ไขเส้นทางอ้างอิงแล้ว
แบรด Urani

39
สำหรับฉันการลบโฟลเดอร์ bin และ obj ไม่ทำงาน ฉันต้องรีสตาร์ท Visual Studio ด้วย
d512

1
ใช้เวลาทุกวันเพื่อค้นหาคำตอบ ขอบคุณที่ให้บริการโซลูชั่น
Racs

8
ฉันได้ปิด VS, ลบโฟลเดอร์ bin และ obj, สร้างใหม่ทุกอย่าง, ตรวจสอบการกำหนดค่าบิวด์ใหม่, สร้างบิลด์สำเร็จ ไม่มีลูกเต๋า สิ่งที่เรียบง่ายไม่ควรซับซ้อนเช่นนี้ >: |
snarf

129

หากคุณไม่ได้ตรวจสอบโครงการ DLL ในการกำหนดค่าการสร้าง Debugรหัสใหม่ของคุณจะไม่ถูกสร้างขึ้น!

ไปที่Build --> Configuration Manager ...(ใน VS2010) และตรวจสอบว่าโครงการที่มีรหัสที่คุณพยายามตรวจแก้จุดบกพร่องนั้นได้รับการตรวจสอบสำหรับการกำหนดค่าบิลด์ปัจจุบันหรือไม่


ขอบคุณสำหรับคำแนะนำของโอลิเวอร์ นั่นไม่ได้เกิดขึ้นที่นี่แน่นอนฉันจะสังเกตเห็นได้อย่างรวดเร็วหากโครงการใดโครงการหนึ่งของฉันไม่ได้สร้างขึ้น
David

3
ฉันมีปัญหาเดียวกันทุกประการเพียง แต่ไม่ได้ทำอะไรเลย มันแค่สร้างสำหรับ x86 ในกล่องโต้ตอบนั้นในขณะที่เครื่องในท้องถิ่นของฉันคือ x64! ดังนั้นฉันเลือกAny CPUตัวเลือกและใช้งานได้อีกครั้ง
JP Hellemons

3
การลบโปรเจ็กต์ออกจากการกำหนดค่าการดีบักโดยไม่มีเหตุผลที่ถูกต้องน่าจะเป็นบาปสำคัญเนื่องจากการกำหนดค่านั้นอาจถูกนำมาใช้โดยเครื่องสร้าง CI (ฉันรู้ว่ามันอยู่ที่นี่) ดังนั้นในที่สุดอาจส่งผ่านได้ ฉันรู้ว่ามันอาจเป็นหนึ่งในหลาย ๆ ขั้นตอนในการสร้าง แต่ยัง ... @Oliver ฉันหวังว่าสมาชิกในทีมจะซื้อบิสกิตให้คุณ! :)
Fetchez la vache

ฉันมีปัญหานี้เมื่อฉันเปลี่ยนไปสร้างเป็น x86 แทน AnyCPU มันลบโครงการจากการถูกสร้างขึ้นด้วยเหตุผลบางอย่างที่ไม่รู้จัก
Adam Pedley

โครงการนี้อยู่ในรายการ Build ในเครื่องมือจัดการการกำหนดค่าดังนั้นสิ่งนี้จึงไม่ได้ช่วยฉันเลยฉันกลัว :(
Ortund

43

สำหรับฉันมันเป็นในขณะที่ทำงานในโครงการเว็บไซต์ หลังจากล้างโฟลเดอร์ temp เหล่านี้ฉันได้รับข้อผิดพลาดของคอมไพเลอร์ที่เหมาะสมกลับมา:

  • C:\Documents and Settings\%username%\AppData\Local\Temp\Temporary ASP.NET Files
  • C:\windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files

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


2
การกำจัดไฟล์ชั่วคราวในไดเรกทอรี windows นั้นเหมาะกับฉัน
ChrisFletcher

7
ฉันต้องการเพิ่มคำตอบที่คล้ายกัน - ตรวจสอบให้แน่ใจว่าไม่มีสำเนาเก่าของ dll โครงการของคุณวางอยู่ในโฟลเดอร์ชั่วคราวใด ๆ ที่ ASP.NET ใช้เช่นC: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ แฟ้มชั่วคราวของ ASP.NET - เป็นที่กล่าวถึง - แต่ยังC: \ Windows \ Microsoft.NET \ Framework_64_ \ v4.0.30319 \ แฟ้มชั่วคราวของ ฉันจะใช้ทุกอย่างที่จะค้นหาได้อย่างรวดเร็วสำหรับสำเนาเหล่านั้น
โอลิเวอร์

12
เพียงคำแนะนำสั้น ๆ : การพิมพ์%localappdata%ในช่องค้นหาจะนำคุณไปสู่C:\Documents and Settings\%username%\AppData\Local
dav_i

1
สามารถยืนยันสิ่งนี้ได้ผลกับฉันใน Visual Studio 2013 ในโครงการเว็บเซอร์
Moeri

ทำทั้งหมดนี้ แต่ดูเหมือนจะไม่ช่วย ฉันตื่นเต้นมากที่ได้เห็นสิ่งนี้เช่นกัน
Ortund

40

คุณเคยทำเช่นนี้?

คุณต้องการดำเนินการต่อและเรียกใช้งานสร้างที่สำเร็จครั้งล่าสุดหรือไม่

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

ลองเปลี่ยนค่านี้:

  • เครื่องมือ
    • ตัวเลือก
      • โครงการและโซลูชั่น
        • สร้างและเรียกใช้
          • On Run เมื่อเกิดข้อผิดพลาดในการสร้างหรือปรับใช้: อย่าเปิดใช้

ฉันไม่คิดว่าฉันได้ทำอย่างนั้น ขอบคุณสำหรับลิงค์แม้ว่า มันทำให้ฉันเข้าใจถึงความหมายของพรอมต์นั้น!
David

11
Visual Studio มีตัวเลือกนี้มานานหลายทศวรรษแล้ว (อย่างน้อยก็ VS98 มี) ฉันไม่เคยเข้าใจเลยว่าทำไมทุกคนถึงต้องการสร้างงานที่ประสบความสำเร็จครั้งล่าสุด ท้ายที่สุดถ้านั่นคือสิ่งที่ฉันต้องการฉันจะเปิดตัวโดยตรงเพราะฉันไม่สามารถดีบักได้ อย่าเปิดตัวจะเป็นค่าเริ่มต้นที่สมเหตุสมผลกว่า
OregonGhost

6
ฉันใช้มันสองสามครั้งเพื่อเรียกใช้โครงการ (ไม่ว่าด้วยเหตุผลใดก็ตามเช่นเพื่อแสดงให้คนอื่นเห็น) ในขณะที่ฉันยังคงเขียนโค้ดที่ไม่ได้รวบรวม บางครั้งมันก็มีประโยชน์ โดยส่วนตัวฉันปล่อยให้มันปิดการใช้งาน
Codesleuth

3
บางทีถ้าพวกเขาต้องแสดงความเหนือกว่าเมื่อเขามาโดยทันที พวกเขาสามารถกด f5 และเป็นเหมือน "คุณเห็นมันใช้งานได้!"
Gigala

33

ไปที่

  • เครื่องมือ
    • ตัวเลือก
      • แก้จุดบกพร่อง
        • ทั่วไป

ยกเลิกการเลือกต้องการไฟล์ต้นฉบับเพื่อให้ตรงกับรุ่นดั้งเดิม


17
@Rachmad วิธีนี้ใช้งานได้ แต่ดูเหมือนว่าไม่ใช่วิธีการแก้ปัญหาที่สมบูรณ์เพราะมันหมายความว่าไฟล์ต้นฉบับของเราไม่ตรงกับเวอร์ชั่นดั้งเดิม
onmyway133

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

แม้ว่าจะไม่ได้รับการตรวจสอบ แต่การดำเนินการก็ยังไม่ถึงจุดหยุดและข้อผิดพลาดยังคงมีอยู่
Ortund

12
นี่ไม่ใช่วิธีแก้ไขปัญหานี้ แต่เป็นการแก้ไขปัญหา เห็นได้ชัดว่าฉันไม่ต้องการทำงานกับไฟล์ที่ล้าสมัยในดีบักเกอร์
โอบีวัน

2
@ObiWan ไม่ชัดเจน ฉันชอบทำการแก้ไขเล็กน้อยและทำการดีบักต่อไปแม้จะรู้ว่าแหล่งที่มาและโครงสร้างนั้นแตกต่างกัน
Alan Baljeu

30

เลือกDebugในการกำหนดค่าโซลูชันแทนที่จะปล่อย

ภาพหน้าจอของเมนู


1
นี่คือปัญหาของฉัน ฉันคอมไพล์ในโหมด debug, เปลี่ยนรหัส, ต่อมาก็รันมันในโหมด release ไม่น่าแปลกใจที่ดีบักเกอร์คิดว่ารหัสนั้นแตกต่างกัน - สัญลักษณ์การดีบักนั้นแตกต่างกัน เมื่อฉันลบโฟลเดอร์ bin ตามที่คนอื่นแนะนำฉันพบข้อผิดพลาด "ไม่มีสัญลักษณ์ถูกโหลดสำหรับเอกสารนี้" ตอนนั้นเองที่ฉันเชื่อมต่อและทำตามคำตอบนี้ มันต้องการคะแนนโหวตมากขึ้น!
indot_brad

เป็นไปได้สำหรับโครงการที่จะปิดการใช้งานสำหรับการสร้างแม้ในการกำหนดค่าการสร้างการตรวจแก้จุดบกพร่อง จำเป็นต้องตรวจสอบการกำหนดค่าการสร้างการพลิกระหว่างการกำหนดค่า Debug / Release นั้นไม่มีจุดหมาย
ซาด Saeeduddin

สำหรับฉันเช่นกัน พยายามทำความสะอาดสร้างโซลูชันที่อ้างอิงอื่น ๆ เพื่อประโยชน์ ไม่ได้สังเกตเห็นวิธีแก้ปัญหากำลังจ้องหน้าฉัน
อดัมเฮ้

นี่คือสิ่งที่เกิดขึ้นกับฉัน - ฉันกำลังสร้างโครงการของฉันและแทนที่ dlls ของฉันซ้ำแล้วซ้ำอีก แต่ปัญหาก็จะไม่หายไป ฉันรู้ว่ารหัสนั้นถูกสร้างขึ้นในโหมด Release ในขณะที่ฉันกำลังแทนที่ dll จากโฟลเดอร์ / bin / debug ฉันโง่
displayName

ฉันต้องการที่จะแนบไปกับกระบวนการที่สร้างในโหมดการเปิดตัว การเปลี่ยนเป็นดีบั๊กแก้ปัญหาของฉันได้
ห้าของ

27

ให้ความสนใจกับหน้าต่าง "เอาท์พุท" ใน VS มันจะบอกคุณว่ามีการโหลดชุดประกอบและเมื่อใด คุณอาจเห็นว่ารุ่นเก่าของแอสเซมบลีของคุณบางแห่งในโฟลเดอร์กำลังโหลด

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


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

24

การปิด Visual Studio และการเปิดโซลูชันอีกครั้งสามารถแก้ไขปัญหาได้เช่นเป็นข้อบกพร่องภายใน IDE ตัวเอง (ฉันใช้ VS2010)

หากคุณมีอินสแตนซ์มากกว่าหนึ่งอินสแตนซ์ของ Visual Studio ทำงานอยู่คุณจะต้องปิดอินสแตนซ์ที่ใช้งานโซลูชันที่มีปัญหา


4
การปิด Visual Studio ก็ช่วยได้เช่นกัน นอกจากนี้ยังมีการดำเนินการ Clean / สร้างใหม่
danielB

3
วิธีนี้แก้ไขปัญหาใน VS 2015
TaintedLemon

3
แก้ไข isue ใน VS 2017
Daniel Fisher lennybacon

แก้ไขปัญหาใน VS 2012
seebiscuit

19

วิธีใหม่ในการรับปัญหานี้ปรากฏขึ้น ณ Visual Studio 2017 15.3.1 ถึง 15.3.5 หากคุณกำลังใช้EditorConfigที่charset=utf8ตัวเลือกที่ทำให้เกิดอาการเหล่านี้ ทีม VS ได้ทำซ้ำนี้และกล่าวว่าพวกเขากำลังทำงานอยู่นั้น

ดังนั้นหนึ่งแก้ไขคือการแสดงความคิดเห็นcharset=utf8สายของคุณในไฟล์. editorconfig

แก้ไข: สิ่งนี้ควรได้รับการแก้ไขตั้งแต่ VS 15.5


สถานะคือ "คงที่ - รอการเปิดตัว" ณ วันที่สองวันที่ผ่านมา (9 ตุลาคม 2017) ซึ่งเป็นข่าวดีเนื่องจาก UTF-8 เป็นเพียงค่าเริ่มต้นสำหรับการเข้ารหัสข้อความในปัจจุบัน :-)
rmunn

ฉันยังสังเกตเห็นว่าสาเหตุที่สำคัญที่สุดของปัญหานี้คือข้อผิดพลาดอื่น ๆ นี้ซึ่งcharset=utf8ถูกตีความว่าเป็น "UTF-8 with BOM" การเปลี่ยนการตีความเป็น "ไม่มี BOM" ทำให้ไฟล์ UTF-8 บางไฟล์เสียหายซึ่งมี BOM อยู่ ดังนั้นหากคุณพบปัญหานี้และโปรแกรมแก้ไข Visual Studio ยังไม่ออกให้ลองลบ BOM ออกจากจุดเริ่มต้นของไฟล์ข้อความและอาจแก้ไขปัญหาได้ (ความคิดเห็นนี้ขอร้องสำหรับการอ้างอิง Zero Wing ... :-))
rmunn

นี่เป็นปัญหาสำหรับฉันเช่นกัน ปัจจุบันนี้ยังไม่ได้รับการแก้ไขหรืออย่างน้อยก็ปล่อยหรือข้อผิดพลาดได้รับการแนะนำอีกครั้ง (รุ่น 15.4.2)
avidenic

12

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


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

ปัญหานี้เป็นปัญหาทั่วไปเมื่อหยิบรหัสดั้งเดิมที่ทำให้ฉันเกาหัวของฉันสงสัยว่าอัจฉริยะที่ตัดสินใจอ้างอิง dll จากโครงการในการแก้ปัญหาที่เคยใช้โดยโครงการอื่นในการแก้ปัญหา ถอนหายใจ
Kell

10

สำหรับฉันไม่มีรายการใดที่แก้ไขปัญหาได้ ฉันเพิ่งเพิ่มรหัสบรรทัดใหม่ในฟังก์ชั่นนั้นเช่น:

int a=0;

โดยการเพิ่มนั้นฉันเดาว่าฉันเรียกใช้ Visual Studio เพื่อเพิ่มฟังก์ชั่นนี้ให้เป็นเวอร์ชั่นดั้งเดิม


7

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


ฉันไม่สามารถ +1 ได้เพียงพอ ฉันเพิ่งติดตั้ง Windows ใหม่และไม่ได้สังเกตว่านาฬิการะบบของฉันปิดอยู่ การเปลี่ยนแปลงนี้ทำให้ทุกอย่างเกิดขึ้นและสร้างโซลูชัน / โครงการทั้งหมดขึ้นมาใหม่
Kyle Baran

7

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

  • โซลูชัน Explorer
    • คลิกขวาที่โซลูชัน
      • คุณสมบัติ
        • คุณสมบัติทั่วไป
          • แก้ไขข้อผิดพลาดไฟล์ที่มา
            • "อย่าค้นหาไฟล์ต้นฉบับเหล่านี้".

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


ฉันประสบปัญหาเดียวกันแน่นอน คำตอบของคุณช่วยฉันได้! ขอบคุณ! +1
jweyrich

5

ปัญหาคือข้อมูลการดีบักของคุณไม่ได้ซิงค์กับแอสเซมบลีของคุณ การแก้ปัญหาง่ายมาก:

  1. ไปที่โฟลเดอร์ถังขยะของคุณ
  2. ลบไฟล์. pdb
  3. สร้างใหม่

ควรทำเคล็ดลับ!

(สิ่งที่แปลกคือการสร้างใหม่โดยไม่ทิ้งไฟล์. pdb ไม่สามารถใช้งานได้ฉันสามารถดูวันที่แก้ไขที่ได้รับการอัปเดต แต่ยังคงอยู่ที่ไหนสักแห่งในห่วงโซ่ (ดีบัก VS2013, IIS, แคชประกอบ) )


Build-> Clean Solution ควรทำการลบไฟล์ที่ต้องการลบออกด้วย
เดฟ

หลังจากการสูญเสียเวลาจำนวนมากไปเพราะปัญหานี้วิธีการแก้ปัญหานี้ก็ทำขึ้นมาได้ ขอบคุณ FrankyHollywood
โฆษณา

4

คุณสามารถรับข้อความนี้ได้เมื่อคุณใช้ activator และแอสเซมบลีที่คุณตั้งค่าเบรกพอยต์ยังไม่ได้โหลด

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


4

ฉันพบสิ่งนี้เช่นกัน เงื่อนไขที่ทำให้เกิดปัญหาของฉัน:

  • ฉันใช้งานอินสแตนซ์ IIS7 แบบเต็มในเครื่อง
  • ฉันกำหนดเวอร์ชันซอฟต์แวร์เป็นโครงการแยกต่างหาก

ฉันเกิดจากการเปิดเวอร์ชันก่อนหน้า (VS ได้รับแจ้งให้ถามว่าฉันต้องการชี้ไปที่อินสแตนซ์นี้ในการดีบัก IIS หรือไม่ฉันตอบ 'ใช่') จากนั้นเปิดเวอร์ชันปัจจุบัน (ตอบกลับไปยัง IIS พร้อมด้วย 'ใช่' ) จากนั้นพยายามแก้ไขข้อบกพร่องในรุ่นก่อนหน้า

เพื่อแก้ปัญหาฉันเพิ่งปิดและเปิดเวอร์ชันก่อนหน้าและเวอร์ชันที่ตั้งใจอีกครั้งยืนยันว่าเป็นแหล่งที่มาของการดีบัก


3

ลองปิดการใช้งานและตั้งค่าเบรกพอยต์ใหม่ในขณะที่ทำงานในโหมดดีบั๊กแทนการทำก่อนที่จะเปิดโหมดดีบั๊ก


3

สิ่งนี้เกิดขึ้นเช่นกันเมื่อทำการดีบั๊กโครงการ C ++ ซึ่งโหลดโมดูลที่ใช้งานกับภาษา CRL บางภาษา (C ++, C # ฯลฯ ที่มีการจัดการ) ในสถานการณ์นี้ข้อความแสดงข้อผิดพลาดจะทำให้เข้าใจผิดแน่นอน

ทางออกคือการวางคุณสมบัติการสนับสนุน Common Language runtime (CLR)ให้กับโครงการเริ่มต้นและคอมไพล์ใหม่


3

หากคุณมีมากกว่าหนึ่งโครงการในการแก้ปัญหาของคุณStartUp Projectแล้วให้แน่ใจว่าโครงการที่ถูกต้องตั้งค่าเป็น Set As StartUp Projectในการตั้งโครงการโดยเฉพาะเป็นโครงการเริ่มต้นของการแก้ปัญหาของคุณคลิกขวาที่โครงการให้เลือก

หลังจากที่ฉันตั้งค่าโครงการเริ่มต้นอย่างถูกต้องเธรดจะถึงจุดพักที่ต้องการ


นอกจากนี้ยังควรสังเกตว่าหากเบรกพอยต์ของคุณอยู่ในโครงการที่ไม่ใช่โครงการเริ่มต้นของคุณและไม่สามารถสร้างโครงการเริ่มต้นของคุณได้ (เพราะคุณจำเป็นต้องมีโครงการอื่นเป็นโครงการเริ่มต้น) คุณสามารถ (หลังจากเริ่มโครงการหลัก) คลิกขวาและเลือกDebug >> เริ่มต้นอินสแตนซ์ใหม่ของโครงการที่มีเบรกพอยต์ในแบบที่คุณต้องการตี
Caius Jard

3

ฉันพบสิ่งนี้ในการสร้าง 32 บิตบน vs2017

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

ฉันดึง 64 บิตจาก nuget และทันทีที่ฉันใช้ชุดประกอบแหล่งข้อมูลไม่ได้ถูกสร้างขึ้นในขั้นตอนสุดท้ายอีกต่อไปแล้วแทน IDE แหล่งแคชที่ถูกสร้างขึ้น

ฉันลบการกำหนดค่า nuget ลบแอสเซมบลีที่อ้างอิงดาวน์โหลดแหล่งสร้าง log4net ด้วยตนเองเซ็นชื่อเพิ่มลงในโฟลเดอร์ในโครงการของฉันเพิ่มการอ้างอิงถึงและฉันสามารถดีบักอีกครั้ง

นี่เป็นความเจ็บปวดฉันหวังว่าจะลุกขึ้นในรายการคำตอบเพื่อให้ทุกคนได้เห็น

แก้ไข: ไม่มีข้อผิดพลาดในระหว่างการสร้างแม้จะมีตัวเลือก "พร้อมรับคำในการสร้างข้อผิดพลาด" ในการตั้งค่า IDE


3

สำหรับฉันโซลูชันถูกซ่อนอยู่ในAdvanced Build Settingsคุณสมบัติของโครงการ: ป้อนคำอธิบายรูปภาพที่นี่

ด้วยเหตุผลที่ไม่ทราบสาเหตุมันถูกตั้งค่าเป็นnone: ตั้งค่าเป็นfullทำให้เบรกพอยต์ถูกโจมตี

หากต้องการเข้าสู่กล่องโต้ตอบนี้ให้เปิดคุณสมบัติโครงการจากนั้นไปที่Buildจากนั้นเลือกAdvanced...ปุ่มที่ด้านล่างของหน้า


3

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

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

หวังว่านี่จะช่วย ..


2

ในกรณีของฉันฉันกำลังเชื่อมต่อกับกระบวนการทำงานใน VS 2012 เมื่อติดตั้งคุณจะได้รับตัวเลือกในการดีบักในโหมดต่างๆ (เนทีฟ, สคริปต์, Silverlight, 2.0, 4.0 ที่มีการจัดการ ฯลฯ ) ตามค่าเริ่มต้นตัวดีบักจะเลือกโหมดโดยอัตโนมัติ อย่างไรก็ตามอัตโนมัติไม่ได้ทำการเลือกที่ถูกต้องเสมอไป หากกระบวนการของคุณมีรหัสหลายประเภทตรวจสอบให้แน่ใจว่าโปรแกรมดีบั๊กใช้รหัสที่ถูกต้อง


ในกรณีของฉันฉันกำลังแนบกับ w3wp.exe เพื่อตรวจแก้จุดบกพร่องรหัส. NET แต่ด้วยเหตุผลบางอย่างก็คือการแนบดีบักเกอร์สคริปต์ซึ่งไม่สามารถเห็นจุดพัก C # ของฉัน การเปลี่ยนเป็นดีบัก. NET อนุญาตให้เบรกพอยต์ C # ของฉันทำงานได้
Oran Dennison

2

ในกรณีของฉันฉันพัฒนาแอพ Windows CE ซึ่งทดสอบกับตัวจำลอง ปัญหาคือไฟล์ปฏิบัติการไม่ได้ถูกปรับใช้กับอีมูเลเตอร์ดังนั้น. pdb (ในสภาพแวดล้อมการพัฒนา) จึงไม่ซิงค์กับ. exe (ในอีมูเลเตอร์) เนื่องจากไฟล์. exe ใหม่ไม่เคยถูกคัดลอกไปยังอีมูเลเตอร์ ฉันต้องลบ. exe ในเครื่องจำลองเพื่อบังคับให้ใช้งานใหม่ จากนั้นก็ใช้งานได้


2

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


2
บางทีตัวเลือกของ CPU อาจไม่ส่งผลกระทบต่อปัญหาเลยและเป็นเพียงความจริงที่ว่ามันบังคับให้สร้างใหม่
jwg

มันจะใช้โฟลเดอร์ bin อื่นอาจมี dll เก่าในแผนที่ cpu ของคุณ
Carra

ฉันมีปัญหานี้ในขณะที่ใช้งานแพลตฟอร์ม x86 (ซึ่งฉันไม่เคยใช้) เปลี่ยนกลับไปเป็น Win32 แก้ไขปัญหาได้ พีซีเป็นพีซีที่ใช้ร่วมกันดังนั้นจึงมีคนอื่นตั้งแพลตฟอร์มนั้นด้วยเหตุผลใดก็ตาม
Zac

2

ภายใต้ Windows 7, Visual Studio Express 2010 หากคุณเปิดใช้งานตัวเลือกใช้โหมดความเข้ากันได้สำหรับ Windows XP SP3ข้อผิดพลาดนี้อาจเกิดขึ้น

ฉันไม่เลือกตัวเลือกและทำงานได้สมบูรณ์แบบอีกครั้ง คลิกขวาที่ทางลัดไปยัง VS หรือปฏิบัติการให้เลือกคุณสมบัติแล้วเข้ากันได้


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

นั่นคือปัญหาของฉัน ขอบคุณ!
Johan Holtby

2

ก่อนอื่นฉันลองจากบรรทัดคำสั่ง

การลบไฟล์ temp จากบรรทัดคำสั่งใช้งานได้

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ไฟล์ ASP.NET> ราก rd / s

เมื่อฉันปิดการใช้งานตัวเลือก"เปิดใช้งานรหัสของฉัน"ในเครื่องมือ -> ตัวเลือก -> การดีบัก -> ทั่วไป

ปัญหาได้รับการแก้ไขสำหรับฉัน มันเป็นแอพพลิเคชั่น WCF พยายามแก้ปัญหาหน้า Ashx http://blogs.msdn.com/b/zainnab/archive/2010/10/25/understanding-just-my-code.aspx


2

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


2

ดีใจที่ได้ใช้ Visual Studio 2017 หลังจากที่ฉันเพิ่มไฟล์ที่มีอยู่ในโครงการ สิ่งนี้ใช้ได้กับฉัน:

  1. ปิดการแก้ปัญหา
  2. ไปSolutionFolder\.vs\SolutionName\v15\sqlite3และลบstorage.ide
  3. เปิดโซลูชันอีกครั้ง

ขอบคุณสำหรับการแก้ปัญหานี้! ไม่เคยทำงานมาก่อนและนี่ช่วยชีวิตฉันไว้ :)
StefanaB

2

ตรวจสอบให้แน่ใจว่าคุณไม่ได้อยู่ในโหมดนำออกใช้เมื่อคุณพยายามแก้ไขข้อบกพร่อง

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