เบรกพอยต์จะไม่ถูกโจมตีในขณะนี้ ไม่มีการโหลดสัญลักษณ์สำหรับเอกสารนี้ในแอปพลิเคชัน Silverlight


331

ตกลงสิ่งที่ฉันมี:

Visual Studio 2010 RC, W7 x64 เริ่มต้นโครงการประเภทใหม่ของแอปพลิเคชัน Silverlight การโฮสต์แอปพลิเคชัน Silverlight ในโครงการแอปพลิเคชันเว็บ ASP.NET Silverlight เวอร์ชั่น 3.0 เพิ่มคลาส LinqToSQL บริการ WCF แอปพลิเคชันเครื่องทดสอบ Winform (โครงการในโซลูชัน) และคลาสไม่กี่รายการ (เช่นเดียวกับโครงการในโซลูชัน)

เมื่อวานนี้ฉันได้รับ 'เบรกพอยต์จะไม่ถูกโจมตีในขณะนี้ ไม่มีการโหลดสัญลักษณ์สำหรับเอกสารนี้ ' ข้อความที่จะปรากฏใน IDE แต่มีผลกับ Web Appliaction เท่านั้นฉันสามารถดีบัก Silverlight และ Winform App ได้

สิ่งที่ฉันพยายามทำเพื่อกำจัดข้อความ:

  • รีเซ็ตการตั้งค่า Visual Studio
  • ลบไฟล์ทั้งหมดในทุกโฟลเดอร์ \ Temporary ASP.NET Files (มีหนึ่งไฟล์สำหรับแต่ละ 32 บิต / 64 บิตและสำหรับ Framework 2.0 และ 4.0)
  • พยายามที่จะแก้ปัญหาโดยใช้ Visual Studio รวมเว็บเซิร์ฟเวอร์ - ปกติฉันใช้ IIS ในผลลัพธ์โครงการของโซลูชั่นที่ฉันลบทุกโฟลเดอร์ obj และ bin ในทุกโฟลเดอร์โครงการ
  • สร้างโซลูชันใหม่และเพิ่มโครงการทั้งหมดในโซลูชันใหม่นี้
  • ลบไฟล์ suo โซลูชัน
  • สร้าง ASP.NET Web Application ใหม่เพื่อทดสอบว่าเป็นปัญหาการติดตั้ง VS => ฉันสามารถดีบักโครงการ / โซลูชันใหม่นี้ได้
  • รีบูทเครื่องหลายครั้ง
  • ซ่อมแซมการติดตั้ง vs.net
  • ทำ IISReset
  • ลบ Web App ออกจาก IIS
  • ใช้ปุ่มสร้างไดเรกทอรีเสมือนภายใต้คุณสมบัติโครงการของ Web App เพื่อสร้าง Web App ใหม่ใน IIS
  • เปลี่ยน Framework Version ของทุกโครงการจาก 3.5 เป็น 4.0
  • เปิดโซลูชันบนเครื่องที่สองของฉัน => ลักษณะการทำงานเดียวกัน
  • ตระเวน Microsoft Connect สำหรับข้อบกพร่อง / ปัญหาที่คล้ายกัน
  • ใช้เวลา 7 ชั่วโมง

ดังนั้นนี่เป็นครั้งที่ 2 ในชีวิตของฉัน ครั้งล่าสุดที่ฉันแก้ไขมันโดยการลบโฟลเดอร์แฟ้ม ASP.NET ชั่วคราว แต่คราวนี้ฉันต้องการความช่วยเหลือของคุณ


นี่คือคำซ้ำให้ดูที่ [หน้านี้] [1], เพื่อตอบคำถามของคุณ [1]: stackoverflow.com/questions/2155930/…
SuperKael

@CalebJares ฮ่า ๆ ฉันพบปัญหานี้วันนี้ ปรากฎว่าฉันกำลังสร้าง / ทำงานในโหมดรีลีสแทนการดีบั๊ก
theB3RV

ในกรณีของฉันการปิดการปรับรหัสในแท็บสร้างของคุณสมบัติโครงการแก้ไขปัญหาได้
Arash Motamedi

คำตอบ:


176

คลิกขวาที่โซลูชัน -> คุณสมบัติ

ดูภายใต้คุณสมบัติทั่วไป -> โครงการเริ่มต้น

เลือกหลายโครงการเริ่มต้น

เลือกเริ่มการดำเนินการกับโครงการที่คุณต้องการตรวจแก้จุดบกพร่อง


ใช้งานได้ แต่ฉันต้องทำสองสามครั้ง (VS 2010, เว็บเซิร์ฟเวอร์ในตัว, เว็บไซต์)
MGOwen

17
ฉันมีหลายโครงการและเริ่มพวกเขาอย่างที่คุณบอก .. บางส่วนของพวกเขาเป็นโครงการห้องสมุดคลาส .. ป๊อปอัพข้อผิดพลาด follwing ปรากฏขึ้น: "โครงการที่มีประเภทเอาท์พุทของ Class Library ไม่สามารถเริ่มต้นโดยตรง"
Muhammad Azeem

3
ฉันมีปัญหาแบบเดียวกันกับที่มูฮัมเหม็ดให้ความเห็น โครงการที่ VS ไม่โหลดสัญลักษณ์สำหรับเป็นโครงการห้องสมุด น่าสนใจอีกวิธีหนึ่งที่เชื่อมโยงไปยังโครงการห้องสมุดเดียวกันนั้นไม่มีปัญหาในการแก้ไขข้อบกพร่องในห้องสมุดเดียวกัน
Vivian River

1
ฉันไม่คิดว่านี่เป็นคำตอบสำหรับคำถาม มันแค่ตั้งหลายโครงการให้เริ่มในเวลาเดียวกันแทนที่จะเป็นเพียงโครงการเดียวที่เป็นเรื่องปกติ หากโครงการเป็น Class Lib (dll) แสดงว่าเกิดข้อผิดพลาดว่าไม่สามารถเริ่มต้นได้ ไม่ว่าโปรเจ็กต์จะเป็นโปรเจ็กต์เริ่มต้นหรือไม่มีการดีบัก
Greg Gum

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

79

ฉันมีปัญหาเดียวกันและหลังจาก googling ฉันพบวิธีแก้ไขปัญหาทั่วไปสองประการสำหรับสิ่งนี้:

  1. ตรวจสอบให้แน่ใจว่าดีบักเกอร์ Silverlight เปิดใช้งานในโครงการ. Web เปิดคุณสมบัติโครงการและเลือกดีบักเกอร์ Silverlight ภายใต้แท็บ "เว็บ"

  2. เริ่มต้น Visual Studio ใหม่และลบโฟลเดอร์ bin และ obj ทั้งหมด

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

แก้ไข:

ต่อมาฉันได้ต่อสู้กับ IE9 ไม่ทำงานเพราะมันยึดติดกับกระบวนการที่ไม่ถูกต้อง แทนที่จะยึดติดกับกระบวนการ IE ที่ถูกต้องทุกครั้งฉันพบเคล็ดลับเรียบร้อย:

  • คลิกขวาที่หน้าใดหน้าหนึ่งที่สร้างขึ้นในโครงการ. Web (.html หรือ. aspx)
  • คลิก "เรียกดูด้วย ... "
  • ตั้งค่า IE เป็นเบราว์เซอร์เริ่มต้น (จะมีผลกับเบราว์เซอร์ที่เลือกใช้ของ Visual Studio เท่านั้น)

ตอนนี้ Visual Studio จะเปิดตัว IE เมื่อเรียกใช้โครงการ. Web และเชื่อมต่อกับกระบวนการที่ถูกต้อง ที่ควรทำ


ขอบคุณนี่ใช้งานได้สำหรับฉัน! ปัญหาเดียวก็คือ: ฉันไม่สามารถตั้งค่าให้เบราว์เซอร์ใดทำงานในไฟล์ปรับแต่งใด ๆ (สามารถฉันได้ไหม) ดังนั้นตอนนี้ฉันติดอยู่กับ IE เป็นเบราว์เซอร์เริ่มต้นของฉัน Bah
DanTheMan

1
เพื่อหลีกเลี่ยงการมี IE เป็นเบราว์เซอร์เริ่มต้นของฉันฉันเปลี่ยนการตั้งค่าการเปิดตัวในโครงการ. Web เพื่อให้ทำงาน IE โดยใช้พา ธ เป็นพารามิเตอร์บรรทัดคำสั่ง
angularsen

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

ความคิดเห็นก่อนหน้าของฉันเกี่ยวกับการตั้งค่าการเปิดตัวไม่ควรปฏิบัติตามเมื่อแก้ไขปัญหาตามที่อธิบายในคำตอบที่แก้ไขแล้วของฉัน เพียงใช้ค่าเริ่มต้น "ตัวเลือกหน้าเฉพาะ" มิฉะนั้นฉันเชื่อว่ามันอาจแนบไปกับกระบวนการที่ไม่ถูกต้อง
angularsen

6
ฉันได้ทำเครื่องหมายในช่องทำเครื่องหมาย "Silverlight" บนแท็บ "เว็บ" ในการตั้งค่าโครงการ. Web ตอนนี้มันใช้ได้แล้ว ขอบคุณ!
Eugene Maksimov

54

เมื่อใดก็ตามที่ฉันมีข้อผิดพลาดนี้เกิดขึ้นปรากฎว่าโฟลเดอร์ที่ Visual Studio กำลังโหลดแอสเซมบลีนั้นแตกต่างจากโฟลเดอร์ที่เว็บแอปพลิเคชันทำงานอยู่

นั่นคือแอปพลิเคชันเซิร์ฟเวอร์กำลังเรียกใช้แอปพลิเคชัน

C:\dev\MyApplication\bin 

แต่ Visual Studio กำลังแก้ไขข้อบกพร่อง

C:\dev\MyOtherApplication\bin (or something along those lines, anyway).

หมายเหตุ - ด้วยเหตุผลต่าง ๆ ฉันทำการดีบักกับ IIS เป็นโฮสต์แอปพลิเคชันแทน gizmo แบบสแตนด์อโลนที่คนส่วนใหญ่ใช้ สิ่งนี้มีอิทธิพลต่อประโยชน์ของคำตอบของฉัน!

อัปเดต :

สำหรับ IIS ไดเรกทอรีแอปพลิเคชันเซิร์ฟเวอร์ (เช่นC:\dev\MyApplicationด้านบน) เป็นไดเรกทอรีทางกายภาพที่กำหนดค่าไว้สำหรับเว็บแอปพลิเคชันซึ่งสามารถควบคุมได้โดยเปลี่ยนการตั้งค่าพื้นฐานสำหรับแอป

สำหรับ Visual Studio ไดเรกทอรีการดีบัก (เช่นC:\dev\MyOtherApplicationด้านบน) เป็นไดเรกทอรีที่svcพบไฟล์ของคุณโดยปกติจะเป็นไดเรกทอรีเดียวกับcsprojไฟล์โครงการของคุณ


2
อาจจะ แต่คำตอบของฮันส์เคใช้ได้สำหรับฉัน ฉันเดาว่ามีคำตอบหลายอย่างขึ้นอยู่กับสถานการณ์
Bob Wintemberg

ตกลง แต่ฉันจะรู้ได้อย่างไรว่าเกิดอะไรขึ้น? ฉันจะแก้ไขได้อย่างไร
MGOwen

@MGOwen - ในการกำหนดค่า IIS ของคุณตรวจสอบตำแหน่งทางกายภาพของโฟลเดอร์เสมือนที่มีบริการของคุณและตรวจสอบให้แน่ใจว่าตรงกับไดเรกทอรีผลลัพธ์จาก VStudio
Bevan

ใช่ฉันยังทำงานกับ IIS แต่หลังจาก VS ขัดข้องไฟล์โซลูชันของฉันจึงเสียหายดังนั้นฉันจึงต้องดึงมันมาจากการโค่นล้มอีกครั้ง แน่นอนฉันลืมไปว่าการทำเช่นนี้จะเปลี่ยนกลับไปใช้เซิร์ฟเวอร์ VS webdev ดุจ! ขอบคุณ!
Fedor Steeman

3
เมื่อ VS สับสนอย่าลืมกลับไปที่โพรไฟล์ Debug นั่นทำให้ฉัน
Christopher Stevenson

46

ปัญหาสำหรับฉันกลับกลายเป็นว่าช่องทำเครื่องหมาย Properties-> Build-> Optimize code ถูกเปิดใช้งานในการกำหนดค่า Debug ปิดใช้งานสร้างใหม่และตรวจแก้จุดบกพร่องทำงานตามปกติ


2
ทำงานให้ฉัน ไม่ทราบสาเหตุจริงๆโดยปกติแล้วการเปิดใช้ "รหัสเพิ่มประสิทธิภาพ" จะไม่ทำให้คุณหยุด {และ}
viggity

ทำงานให้ฉันด้วย! ขอบคุณ!
bisand

1
ชุดโปรเจ็กต์เพื่อปล่อยบิลด์ มีบางสิ่งที่ไม่ได้อยู่เสมอ
Ian Warburton

นั่นทำเพื่อฉัน! +1
Imdad

22

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

1- ดังที่ Bevan กล่าวคุณอาจกำลังดีบั๊กแอปพลิเคชันอื่น

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

การทำความสะอาดหรือการสร้างโซลูชันขึ้นมาใหม่แก้ปัญหาดังกล่าวให้ฉันได้

เพื่อให้แน่ใจว่าไม่ใช่ปัญหาของคุณลองแก้จุดบกพร่องแอปพลิเคชันเดียวกันกับ VS 2008 (ฉันกลัวว่าอาจเป็นข้อบกพร่องใน VS 2010 - ยังคงเป็นรุ่นเบต้า!)


ขอบคุณสำหรับหัวขึ้น .. แน่นอนฉันทำความสะอาด / สร้างโซลูชันใหม่ แต่นั่นไม่ได้ช่วย จุดที่ 1: ฉันจะดีบักแอพอื่นอย่างไรถ้าฉันลองในระบบอื่น? เหมือนกันสำหรับจุดที่ 2 โดยวิธีการมันเป็น RC และค่อนข้างมั่นคงเลย .. ขอบคุณ
Christian Casutt

ฉันไม่เข้าใจวลีของคุณมากนัก "ฉันลองในระบบอื่น"! ปล่อยผู้สมัครไม่ได้หมายความว่ามันเป็นข้อบกพร่องและคุณจะหลวมอะไรถ้าคุณลอง หากคุณใช้ IE8 บางคนบอกว่าอาจเป็นสาเหตุของปัญหาให้ตรวจสอบที่นี่: weblogs.asp.net/abdullaabdelhaq/archive/2009/06/01/…
Sameh Deabes

ฉันพบสิ่งนี้เช่นกัน: stackoverflow.com/questions/389290/…ผู้คนเสนอวิธีแก้ปัญหาที่นั่นด้วย ดูความคิดเห็นจุดพักแบบอินไลน์ที่นั่น
Sameh Deabes

ตกลงฉันเห็น วลีของฉัน 'ฉันลองในระบบอื่น' => คัดลอกโซลูชันบนแท่ง usb ลบโฟลเดอร์ bin / obj ทั้งหมดเปิดโซลูชันใน VS.NET และพยายามแก้ไขปัญหา ผลลัพธ์: same behavior => เบรกพอยต์ไม่ได้รับผลกระทบขอบคุณสำหรับลิงก์อื่น ๆ ฉันจะอ่านทันที
Christian Casutt

ล้าง + สร้างใหม่ไม่อัปเดตไฟล์. pdb เสมอไป สิ่งที่ฉันทำ - ไปที่โฟลเดอร์ / Bin ของเว็บแอปและลบไฟล์. pdb ทั้งหมดด้วยตนเองจากนั้นสร้างใหม่ ทำงานเหมือนจับใจ
Dmitriy

21

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


ที่แปลกมาก. ฉันมีปัญหาเดียวกันและ googled เป็นเวลา 2 ชั่วโมง ด้วยเหตุผลบางประการโมดูลไม่โหลดเมื่อฉันดีบั๊ก (Debug -> Windows -> Module) ฉันเพิ่งลองตัวเลือกนี้และการดีบักบูมเริ่มทำงาน ฉันใช้ Vs2019
Rennish Joseph

18

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

เมื่อคุณเรียกใช้โครงการในโหมดดีบั๊กมันจะแสดงรายการในหน้าต่างผลลัพธ์ที่แอสเซมบลีที่มีสัญลักษณ์โหลดด้านล่าง (คุณอาจต้องเปิดรูปภาพในแท็บใหม่): T

หน้าต่างเอาต์พุต

ดังนั้นในกรณีนี้ BASD.Core.Data.dll ไม่มีสัญลักษณ์โหลด ดังนั้นคุณสามารถเปรียบเทียบการตั้งค่าโครงการสำหรับชุดประกอบนี้กับชุดประกอบอื่นที่จัดการโหลดสัญลักษณ์เพื่อหาสาเหตุที่บางคนทำและบางคนไม่โหลดสัญลักษณ์

"สำหรับฉัน" อย่างไรก็ตาม "ทุกครั้ง" ที่เกิดขึ้นเป็นเพราะข้อมูล Debug ไม่ได้ถูกสร้างขึ้น ดังนั้นฉันจึงเปิดคุณสมบัติโครงการ> สร้าง> ขั้นสูงในโครงการ (C #)

ดังนั้นสำหรับ Basd.Core.Data.dll ดังกล่าวข้างต้นคือไม่มีสัญลักษณ์การตั้งค่าการสร้างขั้นสูงคือ:

pdboff

ในขณะที่สำหรับ Basd.Core.Configuration.dll เช่นการชุมนุมที่ฉันสามารถตั้งค่าและกดจุดพักการตั้งค่าได้:

pdbon

ดังนั้นฉันกำลังส่งออกข้อมูลการดีบักในโครงการหลังและไม่ใช่ในครั้งแรกดังนั้นความสามารถของฉันในการเข้าถึงจุดพักใน Basd.Core.Configuration.dll

โปรดทราบด้วยว่ามันไม่เพียงพอที่จะมีไฟล์. pdb ในโฟลเดอร์ bin ของโครงการสำหรับ. dll ที่กำหนดเพราะมันอาจล้าสมัยและดังนั้น Visual Studio จึงไม่ได้รับไฟล์สัญลักษณ์ที่ถูกต้องสำหรับ DLL คุณกำลังพยายามที่จะก้าวผ่าน

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

(ฉันตระหนักในกรณีนี้ฉันอยู่ในโหมด Release แต่วิธียังคงใช้)


1
นอกจากนี้คุณยังสามารถตรวจสอบสัญลักษณ์ที่ถูกโหลดผ่านหน้าต่างโมดูล ถ้าคุณไปที่ Debug> Windows> Modules มันจะแสดงรายการโมดูลทั้งหมดและสถานะสัญลักษณ์ สำหรับคนที่ไม่โหลดคุณสามารถคลิกขวาที่พวกเขาและคลิก "โหลดสัญลักษณ์" นี่เป็นวิธีแก้ไขปัญหาระยะสั้นมากกว่าและใช้ได้เฉพาะเมื่อแสดงในรายการเพื่อเริ่มต้นด้วย
EF0

14

คุณสมบัติของโครงการไปที่ -> Build -> ขั้นสูง ...

ในส่วน "เอาท์พุท" เลือก "เต็ม" ในดร็อปดาวน์ข้อมูลการดีบัก


ฉันพยายามแนบดีบักเกอร์กับโปรไฟล์การวางจำหน่ายและสิ่งนี้ใช้ได้สำหรับฉัน!
imlokesh

1
ขอบคุณ! "pdb-only" (แทนที่จะเต็ม) ก็เพียงพอแล้ว
เกร็กเล็ก ๆ น้อย ๆ

ขอพระเจ้าคุ้มครองลูกของฉัน
Christopher D. Emerson

13

ตรวจสอบให้แน่ใจว่าคุณกำลังรันโปรแกรมของคุณในโหมด DEBUG และไม่ใช่โหมด RELEASE


คำตอบที่ดี ขอบคุณ
Krishan Subudhi

10

แก้ไขข้อบกพร่อง -> แนบกับกระบวนการ ->
เลือกตรวจแก้จุดบกพร่องประเภทรหัสเหล่านี้:ตัวเลือก ->
เลือกManaged v3.5, v3.0, v2.0หรือManaged v4.5, v4.0 ป้อนคำอธิบายรูปภาพที่นี่


นี่คือปัญหาที่ฉันพบ ฉันมีบางโครงการใน v4.5 และอื่น ๆ ใน v2.0 (ใช่ฉันรู้ฉันรู้ ... ) เห็นได้ชัดว่าการตั้งค่านี้ไม่ได้เป็นโครงการดังนั้นเมื่อฉันตั้งค่าในโครงการ v4.5 ฉันต้องตั้งค่ากลับเมื่อฉันเข้าสู่โครงการ v2.0
L_7337

9

ฉันได้รับการแก้ไขปัญหานี้เพียงตามโปรแกรมการปรับใช้ Silverlight (คำตอบนี้ซ้ำกับคนอื่น แต่ฉันจะพยายามอธิบายให้ละเอียดยิ่งขึ้น)

ปัญหาเป็นไปได้มากที่สุดว่าแอปพลิเคชัน Silverlight ของคุณไม่ได้รับการปรับใช้อย่างเหมาะสมกับแอปพลิเคชันเว็บของคุณเมื่อสร้าง / เริ่มต้น นี่เป็นปัญหาการอ้างอิง - ง่ายต่อการเข้าใจ แต่ไม่ชัดเจนในครั้งแรกที่คุณพบ

เช่นเดียวกับการอ้างอิงโครงการอื่น ๆเอาต์พุตของโปรเจ็กต์ที่อ้างอิงควรถูกคัดลอกไปยังโฟลเดอร์ bin ของโปรเจ็กต์อ้างอิงเพื่อทำการดีบั๊ก สำหรับไลบรารีคลาสสิ่งนี้จะเกิดขึ้นเมื่อคุณคลิกขวาและเลือก 'เพิ่มการอ้างอิง ... ' สำหรับ Silverlight คุณควรเพิ่มการอ้างอิงผ่านคุณสมบัติโครงการ

  • คลิกขวาที่โครงการของคุณแล้วเลือก 'คุณสมบัติ'
  • เลือกแท็บ 'Silverlight Applications' ทางด้านซ้าย
  • กดปุ่ม 'เพิ่ม ... ' และเลือกโครงการ Silverlight ของคุณจากกล่องโต้ตอบ

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


9

หากคุณกำลังดีบักโครงการเว็บตรวจสอบให้แน่ใจว่าได้ตั้งค่าแอตทริบิวต์ debug = "true" ในไฟล์ web.config ของคุณ:

<system.web>
    <compilation debug="true"   .../>

8

ฉันมีปัญหาเดียวกันใน Windows 7 และลองทุกอย่าง : ทำความสะอาด DLLs รายการโมดูลที่ตรวจสอบแล้วปิด "Just My Code" และอื่น ๆ

ปัญหาได้รับการแก้ไขหลังจากที่ฉันเรียกใช้ Visual Studio "ในฐานะผู้ดูแลระบบ" อย่างสุจริต ทำไม Microsoft ไม่สามารถเตือนฉันได้ว่ามันไม่ได้ทำงานเป็น "ผู้ดูแลระบบ"? มันจะช่วยฉันทำงานหลายชั่วโมง


8

สำหรับฉันปัญหาคือว่าฉันได้เปิดใช้งาน "รหัสเพิ่มประสิทธิภาพ" ในแท็บสร้างการตั้งค่าของโครงการของฉัน


7

มีปัญหาเดียวกัน

ด้วยเหตุผลบางอย่าง DLLs ตัวใดตัวหนึ่งถูกลงทะเบียนใน GAC ดังนั้นจึงมักจะมีรุ่นที่แตกต่างจากรหัส

เมื่อฉันลบออกจาก GAC ปัญหาได้รับการแก้ไข


คุณหมายถึงสถานการณ์นั้นเป็นอย่างไร? หรือฉันจะลบมันได้อย่างไร
Stikut

คุณลบออกอย่างไร ฉันมีปัญหาเดียวกันและไม่สามารถแก้ไขได้ ฉันลองทุกอย่างแล้วก็หวังว่านี่จะเป็นทางออกของฉัน
Gaui

1
ฉันหวังว่าคุณจะสามารถใช้สิ่งนี้: support.microsoft.com/kb/873195 เว้นแต่คุณจะมีข้อผิดพลาดอื่น ๆ
Stikut

6

สำหรับผู้อ่านที่ใช้ Visual Studio 2008 ไม่ใช่ Visual Studio 2010 และได้รับข้อผิดพลาดนี้ คำตอบข้างต้นไม่ได้ช่วยฉันในสถานการณ์เช่นนี้ดังนั้นฉันจึงแบ่งปันประสบการณ์

หากคุณกำลังดีบักแอปพลิเคชัน IIS เว็บใน Visual Studio 2008 โดยแนบกับกระบวนการ w3wp.exe แทนที่จะใช้ ASP.NET Development Server สำหรับการดีบัก (เริ่มต้นด้วยการดีบัก) นี่อาจเป็นปัญหาของคุณ:

Visual Studio อาจยังอ้างถึงไฟล์สัญลักษณ์ (ไฟล์ที่ใช้ระหว่างการดีบัก) จาก dll ของคุณจากกระบวนการ IIS ที่ล้าสมัย และไฟล์สัญลักษณ์นั้นถูกสร้างขึ้นใหม่โดยซอร์สโค้ด. NET recompile แต่กระบวนการ IIS ยังคงอ้างอิงไฟล์สัญลักษณ์เก่า

เพื่อแก้ไข:

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

========================

สิ่งที่ต้องลองเพิ่มเติม (พบสถานการณ์ใหม่วันนี้):

ทำสัญลักษณ์แสดงหัวข้อย่อยแต่ละรายการในลิงก์ด้านล่างหนึ่งครั้ง แต่ทำซ้ำขั้นตอนของฉันด้านล่างกับแต่ละรายการที่คุณลอง

http://carnotaurus.philipcarney.com/post/4130422114/visual-studio-debugging-issue-with-files-of-the-same

1. ) หยุดการดีบั๊ก (กดไอคอนสี่เหลี่ยมสีแดง) ใน Visual Studio
2. ) Clean Solution
3. ) Build Solution
4. ) [INSERT BULLET INSTRUCTION HERE]
5. ) เครื่องมือ> แนบกับกระบวนการ (หรือเริ่มด้วยการดีบัก)
6. ) เริ่มโปรแกรมที่คุณกำลังเชื่อมต่อและเรียกใช้เพื่อให้รหัสของคุณได้รับผลกระทบ

6 อธิบาย:

หากติดกับ nunit.exe ให้เปิด NUnit และรันการทดสอบเพื่อให้เบรกพอยต์ของคุณถูกโจมตี

หากติดกับ w3wp.exe (ไซต์ IIS) ให้เปิดไซต์ของคุณในเบราว์เซอร์แล้วไปที่หน้าที่จะเข้าสู่เบรกพอยต์ของคุณ

แก้ไข:

วันนี้ฉันสังเกตเห็นว่าถ้าคุณลองแก้ไขข้อบกพร่องในโครงการที่ไม่ได้ตั้งค่าเป็นโครงการเริ่มต้นก็จะแสดงสิ่งนี้ เมื่อคุณแนบกับกระบวนการ w3wp.exe ของคุณจะคิดว่าการดีบักในโครงการที่ตั้งเป็นโครงการเริ่มต้น หากต้องการแก้ไขให้คลิกขวาที่โครงการเว็บแอปพลิเคชันแล้วเลือก "ตั้งค่าเป็นเริ่มต้นโครงการ" จากนั้นลองแนบกระบวนการของคุณอีกครั้ง


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

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

5

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

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

โครงการ A มีหลัก มันอ้างอิง Project B จุดพักของคุณไม่ได้รับผลกระทบในโครงการ B คัดลอกไฟล์ DLL และ PDB จากเส้นทางสร้างผลลัพธ์ของโครงการ B ไปยังเส้นทางผลลัพธ์ของโครงการ A จากนั้นเรียกใช้โซลูชันของคุณ จุดพักจะถูกโจมตี

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


ย่อหน้าที่ 2 ของคุณแก้ไขปัญหาของฉันแล้ว หนึ่งในโครงการในการแก้ปัญหาคือในไดเรกทอรี bin ที่แตกต่างจากไดเรกทอรี bin ของ dll เริ่มต้น
BobRodes

4

การแก้ไขปัญหาเดียวกันในกรณีของฉันคือการรวมกันของขั้นตอนต่อไปนี้:

  1. การแก้ไข -> คุณสมบัติเลือกโครงการเริ่มต้นหลายโครงการเลือกเริ่มการทำงานกับโครงการที่คุณต้องการแก้ไขข้อบกพร่อง
  2. ลบบริการจากการอ้างอิงบริการและทำความสะอาดการแก้ปัญหา
  3. สร้างโครงการบริการใหม่
  4. เพิ่มกลับไปยังการอ้างอิงบริการ
  5. ทำความสะอาดโซลูชันและสร้างใหม่

4

เพื่อแก้ไขปัญหานี้ใน Web.config ฉันต้องเพิ่ม debug="true"

  <system.web>
    <compilation targetFramework="4.0" debug="true">

สิ่งที่ช่วยให้ฉันค้นหาวิธีแก้ปัญหานี้ได้รับการดูที่หน้าต่างโมดูลขณะทำการดีบั๊กและเห็นว่าสำหรับ ASP.NET DLL ของฉันโหลดแล้วฉันมี: ไบนารีไม่ได้ถูกสร้างขึ้นด้วยข้อมูลการดีบัก


3

ฉันมีปัญหาเดียวกัน แต่ใน VS2013 สำหรับ Web App สำหรับฉันคำตอบคือการปรับปรุงการกำหนดค่าการสร้างสำหรับการแก้ปัญหา: -

  1. คลิกขวาที่โซลูชันและเลือกคุณสมบัติ
  2. เลือกการกำหนดค่า Debug
  3. เลือก "การกำหนดค่า" ภายใต้ "คุณสมบัติการกำหนดค่า" ในขาตั้งสามขา
  4. ทำเครื่องหมายที่ช่อง "สร้าง" สำหรับแต่ละโครงการที่คุณต้องการแก้ปัญหา

เมื่อฉันทำสิ่งนี้จุดหยุดทั้งหมดของฉันเริ่มทำงาน


สิ่งนี้ได้ผลสำหรับฉัน แต่ฉันต้องเปลี่ยนโครงการทั้งหมดของฉันจาก Release เป็น Debug ภายในคอลัมน์ Configuration
JoshYates1980

2

โอเค - เราไปกันเลย:

(ใน "แอป silverlight": โปรดตรวจสอบก่อนว่ามีการทำเครื่องหมาย Silverlight ใน "เว็บ" ใน "คุณสมบัติ" ในโปรเจ็กต์เซิร์ฟเวอร์ของคุณ - หากไม่ได้แก้ปัญหาให้ลองด้านล่าง)

ในครั้งแรกทำ: เรียกใช้สิ่งนี้ก่อน: devenv.exe / ResetSettings และ 1: ในเมนูด้านบนคลิกที่แท็กดีบั๊ก 2: ตัวเลือกคลิกและการตั้งค่า 3: ใน "การดีบัก" และภายใต้ "ทั่วไป" ค้นหา "เปิดใช้งาน 4: ทำเครื่องหมายที่กล่อง 5: และตอนนี้สัญลักษณ์ทั้งหมดจะถูกดาวน์โหลดและกำหนดค่าใหม่ :)

หากเกิดขึ้นอีกครั้งหลังจากข้างต้นเพียงล้างโฟลเดอร์ที่มีสัญลักษณ์:

1: ในเมนูด้านบนคลิกที่แท็กตรวจแก้จุดบกพร่อง 2: ตัวเลือกคลิกและการตั้งค่า 3: ใน "แก้จุดบกพร่อง" และภายใต้ "สัญลักษณ์" ค้นหาปุ่ม "แคชสัญลักษณ์ว่าง" และคลิก


2

เปิด URL ของแอปพลิเคชันเว็บจากเบราว์เซอร์และจากนั้นใน VS.Net IDE ให้ใช้เครื่องมือ -> AttachtoProcess

จากนั้นแนบกับ aspnet_wp.exe

เครื่องมือดีบั๊กจะเริ่มทำงาน


2

ฉันต้องถอนการติดตั้งอินสแตนซ์ทั้งหมดของ. dll จากรีจิสทรีด้วยตนเองและอินสแตนซ์ทั้งหมดของ. dll จากไดรฟ์ภายในเครื่องของฉัน ถอนการติดตั้ง / ติดตั้งแอพของฉันใหม่และตอนนี้ฉันกำลังตีจุดพัก! เสียเวลาครึ่งวันในการทำสิ่งนี้ :(


2

ฉันลองเปลี่ยนชื่อ.pdbไฟล์ในobj\debugโฟลเดอร์และทำโซลูชันที่สะอาดและสร้างใหม่
มันสร้าง.pdbไฟล์ใหม่และฉันก็สามารถเข้าถึงจุดพักได้อย่างถูกต้อง


2

ฉันมีปัญหาเดียวกัน - เสียเวลาส่วนใหญ่ในการพยายามแก้ไขข้อบกพร่องใน Visual Studio

มันจบลงด้วยการเป็น Nuget - ฉันมี Newtonsoft.Json 3 เวอร์ชัน (ในโครงการ 7 C # ทั้งหมด) วิธีการแก้ปัญหาจะรวบรวม แต่ไม่สามารถ debuggable

ฉันแก้ไขปัญหาโดยเรียกใช้สิ่งต่อไปนี้ในคอนโซลตัวจัดการแพคเกจของ Nuget:

PM> อัพเดทแพคเกจ Newtonsoft.Json


2

สำหรับแอพ WPF ของฉันฉันลบโฟลเดอร์แอปพลิเคชันได้ "รับล่าสุด" จากแหล่งควบคุมอีกครั้งและสร้างใหม่ จุดพักทั้งหมดทำงานได้ดีในขณะนี้


1

ลองตั้งค่า Silverlight Application Project เป็นโครงการเริ่มต้น: คลิกขวาที่โครงการ -> 'ตั้งค่าเป็นโครงการเริ่มต้น จากนั้นกด F5 และดูว่าคุณสามารถจับเบรกพอยต์หรือไม่ ...

ลองลบข้อมูลการท่องเว็บ / ข้อมูลชั่วคราวในเบราว์เซอร์ของคุณทุกครั้งที่คุณทำการเปลี่ยนแปลงแอปพลิเคชัน Silverlight


1

เรื่องเล็กอีกเรื่องหนึ่งซึ่งอาจเป็นประโยชน์ -

ฉันพบปัญหานี้เมื่อหนึ่งในโครงการของฉันใช้การอ้างอิงไฟล์จากโฟลเดอร์เอาท์พุทเผยแพร่ เมื่อผลลัพธ์การบิลด์ถูกวางไว้ในโฟลเดอร์ Goods, DLLs Release เหล่านี้ถูกเขียนทับ Debug dll

วิธีแก้ไขคือทำให้แน่ใจในไฟล์ csproj HintPath ที่อ้างอิงของฉันคือ

<HintPath>..\..\Core\Goods\$(Configuration)\MyFramework.dll</HintPath>

และไม่

<HintPath>..\..\Core\Goods\Release\MyFramework.dll</HintPath>


1

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

ยังไม่แน่ใจว่าทำไม แต่บางคนก็ debuggable บางคนไม่ถึงแม้ว่าในการตั้งค่าการอ้างอิงสำหรับการประกอบเส้นทางที่ถูกต้องเต็มมีการระบุ

พฤติกรรมที่ไม่อาจคาดเดาได้นี้ทำให้ฉันโกรธ :)

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


1

ฉันมีปัญหาที่คล้ายกันยกเว้นปัญหาของฉันคือโง่ - ฉันมี 2 กรณีของเว็บเซิร์ฟเวอร์ในตัวที่ทำงานภายใต้ 2 พอร์ตที่แตกต่างกันและฉันมีโครงการของฉัน -> คุณสมบัติ -> เว็บ -> "URL เริ่มต้น" ชี้ไปยังพอร์ตคงที่ เว็บแอปไม่ได้ทำงานภายใต้พอร์ตนั้น ดังนั้นเบราว์เซอร์ของฉันจึงถูกเปลี่ยนเส้นทางไปยัง "URL เริ่มต้น" ซึ่งอ้างถึง 1539 แต่อินสแตนซ์ของรหัส / การดีบักทำงานภายใต้พอร์ต 50803

ฉันเปลี่ยนเว็บเซิร์ฟเวอร์ในตัวให้ทำงานภายใต้พอร์ตคงที่และปรับ "URL เริ่มต้น" ของฉันให้ใช้พอร์ตนั้นเช่นกัน โครงการ -> คุณสมบัติ -> เว็บ -> ส่วน "เซิร์ฟเวอร์" -> "ใช้เซิร์ฟเวอร์การพัฒนา Visual Studio" -> พอร์ตเฉพาะ

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