ข้อผิดพลาด“ ไม่พบไฟล์ข้อมูลเมตา '… \ Release \ project.dll ใน Visual Studio”


135

เมื่อเร็ว ๆ นี้ฉันเริ่มได้รับข้อความนี้แบบสุ่ม:

ไม่พบไฟล์ข้อมูลเมตา '... \ Release \ project.dll' ใน Visual Studio

ฉันมีวิธีแก้ปัญหากับหลายโครงการในนั้น โหมดการสร้างปัจจุบันคือ Debug และการกำหนดค่าของโปรเจ็กต์ทั้งหมดถูกตั้งค่าเป็น Debug แต่เมื่อฉันพยายามเรียกใช้โปรเจ็กต์หลัก - บางครั้งมันทำให้ฉันมีข้อผิดพลาดเล็กน้อยซึ่งทั้งหมดนี้เป็น "ไฟล์ข้อมูลเมตา" ... \ Release \ projectX.dll "ไม่พบ" - และดูมันบอกเกี่ยวกับ RELEASE โฟลเดอร์แม้ว่าโหมดปัจจุบันจะเป็น Debug ทำไม? ฉันพยายามค้นหาการอ้างอิงถึง "Release \ projectX.dll" ในไฟล์โซลูชันทั้งหมดและพบไฟล์หนึ่งในไฟล์ ResolveAssemblyReference.cache

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

ฉันพยายามลบการอ้างอิงถึงโครงการเหล่านั้นและอ่าน แต่ในบางครั้งฉันก็เริ่มได้รับข้อผิดพลาดเหล่านี้อีกครั้ง

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

ปล. สำหรับผู้ที่พบปัญหานี้: ฉันไม่สามารถแก้ปัญหาได้ด้วยวิธีง่ายๆ มันหายไปหลังจากฉันติดตั้ง Windows ใหม่เท่านั้น :(


สิ่งแรกสำหรับปัญหาเช่นนี้คือการลบไฟล์. suo และสร้างใหม่
ระบาย

ปัญหานี้อาจเกิดขึ้นได้หาก dll ที่อ้างอิงใช้. net Framework รุ่นอื่น (ต่ำกว่า)
m4ngl3r

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


คำตอบ:


138

ถูกต้องทุกคน ... ลองทุกอย่าง ... (ตามลำดับค่าเสียเวลาเล็กน้อยถึงมาก)

  1. คุณมีรหัสที่ไม่ถูกต้องหรือไม่? แก้ไขก่อน
  2. Clean Solution & รีสตาร์ท Visual Studio
  3. ลบ / เพิ่มการอ้างอิง
  4. ตรวจสอบใบสั่งสร้างของคุณกับโครงการขนาดใหญ่และตรวจสอบ
  5. สร้างโครงการย่อยใหม่ด้วยตนเอง
  6. คัดลอก dll ด้วยตนเองระหว่างโปรเจ็กต์ลงในโฟลเดอร์ bin ที่เกี่ยวข้อง
  7. ไปซื้อกาแฟเล่นพินบอลแล้วกลับมาพรุ่งนี้ ... คุณอาจคิดถึงอย่างอื่นในขณะเดียวกัน

17
คุณต้องล้างข้อผิดพลาดทั้งหมดและรับโซลูชัน / โครงการที่เสถียร
ราวีราม

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

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

6
ฉันมีเนมสเปซและชื่อโปรเจ็กต์ที่ไม่ตรงกันใน dll ที่อ้างอิงถึงบ้าน นอกจากนี้ยังสร้างด้วย. NET 4.5.2 แทนที่จะเป็น 4.5 ชาย!
Jess

1
ลองลบไฟล์. suo เป็นเรื่องปกติที่จะเกิดความเสียหาย
Timbo

22

ฉันมีปัญหาเดียวกันแน่นอน โซลูชันสตูดิโอภาพขนาดใหญ่ที่มีมากกว่า 50 โครงการ

การอ้างอิงทั้งหมดถูกเพิ่มเป็นโปรเจ็กต์ ลำดับการสร้างโครงการถูกต้อง (คลิกขวาที่โครงการและเลือกลำดับการสร้าง)

อย่างไรก็ตามเมื่อสร้างโปรเจ็กต์ระดับสูงกว่านั้นโปรเจ็กต์ "รูท" ที่พวกเขาขึ้นอยู่นั้นไม่ได้ถูกสร้างขึ้น

ปัญหาคือไม่ได้เลือกโปรเจ็กต์เหล่านี้ให้สร้างภายใต้การกำหนดค่าปัจจุบัน (ไม่รู้ว่าเกิดขึ้นได้อย่างไร)

ในการตรวจสอบสิ่งนี้ให้เลือก "Configuration Manager" (เมนู Build) และตรวจสอบว่าโครงการที่มีปัญหาถูกตั้งค่าให้สร้าง


ขอบคุณ! สิ่งนี้ได้ผลดีสำหรับฉันเมื่อด้วยเหตุผลบางประการการกำหนดค่ารุ่นของฉันไม่ได้สร้างโครงการของฉัน
Vectovox

คุณช่วยชีวิตฉัน!
Chethan Shetty

16

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

แก้ไข : หากคุณใช้แท็บ "เรียกดู" และเพิ่มการอ้างอิงไปยัง. dll ของคุณด้วยตนเองที่อยู่ในโฟลเดอร์ / Release Visual Studio จะมองหา. dll ในตำแหน่งนั้นเสมอไม่ว่าคุณจะอยู่ในโหมดใดก็ตาม ขณะนี้อยู่ใน (Debug หรือ Release)

หากคุณลบไฟล์. dll จริงออกจากโฟลเดอร์ Release (ด้วยตนเองหรือโดยการทำ "Clean Solution") การอ้างอิงของคุณจะพังเพราะไม่มี. dll

ฉันขอแนะนำให้ลบการอ้างอิงไปยัง ProjectX.dll และเพิ่มอีกครั้ง แต่คราวนี้ให้ใช้แท็บ "โครงการ" ในกล่องโต้ตอบ "เพิ่มการอ้างอิง" เมื่อคุณเพิ่มการอ้างอิงด้วยวิธีนี้ Visual Studio จะรู้ว่าจะรับ. dll ที่เหมาะสมได้จากที่ใด หากคุณอยู่ในโหมด Debug ก็จะได้รับจากโฟลเดอร์ / Debug หากอยู่ในโหมด Release โฟลเดอร์ / Release ข้อผิดพลาดในการสร้างของคุณควรหายไปและคุณจะไม่ (ไม่ถูกต้อง) อ้างถึงรีลีส. dll อีกต่อไปขณะอยู่ในโหมดดีบั๊ก


ฉันใช้แท็บ "เรียกดู" ในกล่องโต้ตอบ "เพิ่มการอ้างอิง"
nightcoder

1
สำหรับฉัน Visual Studio ได้สร้าง projectname.v11 ประเภท "Visual Studio Solution User Options" ฉันลบไฟล์นี้และรีสตาร์ทและทุกอย่างเรียบร้อยดี
Wes Grant

15

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

ส่วนที่ 1):

ในการแก้ปัญหาทั่วไป:

ฉันมีข้อผิดพลาดประเภทนี้ 4 รายการ ('ไม่พบไฟล์ข้อมูลเมตา') พร้อมกับข้อผิดพลาด 1 รายการที่ระบุว่า 'ไม่สามารถเปิดไฟล์ต้นฉบับได้ (' ข้อผิดพลาดที่ไม่ระบุ ')'

ฉันพยายามกำจัดข้อผิดพลาด 'ไม่พบไฟล์ข้อมูลเมตา' ด้วยเหตุนี้ฉันอ่านโพสต์บล็อกและอื่น ๆ มากมายและพบว่าโซลูชันเหล่านี้อาจมีประสิทธิภาพ (สรุปไว้ที่นี่):

  1. รีสตาร์ท VS แล้วลองสร้างอีกครั้ง

  2. ไปที่'Explorer โซลูชัน' คลิกขวาที่โซลูชัน ไปที่Properties ไปที่'Configuration Manager' ตรวจสอบว่ามีการทำเครื่องหมายในช่องใต้"สร้าง"หรือไม่ หากไม่ได้เลือกรายการใดรายการหนึ่งหรือทั้งหมดให้ตรวจสอบและลองสร้างอีกครั้ง

  3. หากวิธีแก้ปัญหาข้างต้นไม่ได้ผลให้ทำตามลำดับที่กล่าวถึงในขั้นตอนที่ 2 ข้างต้นและแม้ว่าจะเลือกช่องทำเครื่องหมายทั้งหมดแล้วให้ยกเลิกการเลือกตรวจสอบอีกครั้งและลองสร้างอีกครั้ง

  4. สร้างคำสั่งซื้อและการพึ่งพาโครงการ:

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

  5. ตรวจสอบเส้นทางของ. dll ที่หายไป:

    ตรวจสอบเส้นทางของ. dll ที่หายไป หากพา ธ มีช่องว่างหรืออักขระพา ธ อื่นที่ไม่ถูกต้องให้ลบออกและลองสร้างอีกครั้ง

    หากเป็นสาเหตุให้ปรับลำดับการสร้าง


ส่วน (2):

กรณีเฉพาะของฉัน:

ฉันลองทำตามขั้นตอนทั้งหมดข้างต้นด้วยการเรียงสับเปลี่ยนและชุดค่าผสมต่างๆด้วยการรีสตาร์ท VS สองสามครั้ง แต่มันไม่ได้ช่วยฉัน

ดังนั้นฉันจึงตัดสินใจที่จะกำจัดข้อผิดพลาดอื่น ๆ ที่ฉันเจอ ('ไม่สามารถเปิดไฟล์ต้นฉบับได้ (' ข้อผิดพลาดที่ไม่ระบุ ')')

ฉันเจอบล็อก: http://www.anujvarma.com/tfs-errorsource-file-could-not-be-opened-unspecified-error/#comment-1539

ฉันลองทำตามขั้นตอนที่กล่าวถึงในบล็อกนั้นและฉันได้กำจัดข้อผิดพลาด'Source File can't Be Opened (' Unspecified error ')'และน่าแปลกใจที่ฉันได้กำจัดข้อผิดพลาดอื่น ๆ('ไม่พบไฟล์ข้อมูลเมตา')ด้วย


ส่วน (3):

นิทานสอนใจ:

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



1
โหวตคำตอบนี้เนื่องจากเราพบปัญหานี้กับเพื่อนร่วมงาน ระบบของเขาสูญเสียการอ้างอิงส่วนใหญ่ / ทั้งหมดของเขาไปดังนั้นเมื่อสร้างมันจะไม่สร้างในลำดับที่ถูกต้องทำให้ไม่มี "ไฟล์ข้อมูลเมตาสำหรับ" what.dll " เราเพิ่งเดินผ่านโครงการทั้งหมดของเขาด้วยระบบอื่นเพื่อตรวจสอบการอ้างอิงทั้งหมดที่เขาต้องการสำหรับแต่ละโครงการ
jmbertucci

ดี ... ฉันดีใจที่คำตอบของฉันช่วยคุณได้บ้าง
Vikram

11

ฉันเคยมีปัญหานี้มาก่อนและวิธีเดียวที่ฉันพบในการแก้ไขคือเรียกใช้ Clean Solution จากนั้นรีสตาร์ท Visual Studio


1
มันไม่ได้ช่วยอะไรในสถานการณ์ของฉันหลังจากนั้นไม่นานปัญหาก็ปรากฏขึ้นอีกครั้ง
nightcoder

นี่คือสิ่งที่แก้ไขสำหรับฉัน
เฝือก

3
อันนี้ใช้ได้ผลกับฉันเช่นกัน ทำความสะอาดหลายครั้งและไม่มีอะไรได้ผล เมื่อฉันทำความสะอาดและเริ่มต้นใหม่มันก็เริ่มทำงานอีกครั้ง น่ารำคาญแค่ไหน
Ricky

8

สำหรับฉันแล้วมันมักจะปิดกรอบเป้าหมาย (4.5.2 แทนที่จะเป็น 4.6) หากคุณแก้ไขกรอบเป้าหมายของโครงการให้ตรงกับกรอบเป้าหมายของโซลูชันและการสร้างจะมีการสร้าง. dll ใหม่


ฉันมีปัญหาเดียวกันกับโครงการที่สร้างด้วย Visual Studio เวอร์ชันเก่ากว่า หลังจากอัปเดต VS โปรเจ็กต์ถูกสร้างขึ้นด้วย. NET เวอร์ชันที่ใหม่กว่าและทำให้เกิดปัญหาที่ไม่พบ DLL (ไปที่บานหน้าต่างคุณสมบัติสำหรับโปรเจ็กต์เพื่อดู / แก้ไขเวอร์ชัน. NET) ขอบคุณ!
Tony S Yu

ขอบคุณล้านครั้ง (นั่นคือจำนวนวิธีแก้ปัญหาอื่น ๆ ที่ฉันพยายาม) สิ่งนี้ได้ผล ด้วยเหตุผลบางประการไลบรารีที่ฉันเพิ่มจึงกำหนดเป้าหมายเวอร์ชัน. NET framework ที่แตกต่างจากโครงการอื่น ๆ ทั้งหมด
Nour Lababidi

1
ฉันได้เพิ่มโปรเจ็กต์ Class Library ใหม่ (dll) ซึ่งอ้างอิงในโปรเจ็กต์อื่น ๆ dll ใหม่คือ. NET Framework 4.8 ในขณะที่โครงการอื่น ๆ ทั้งหมดเป็น 4.7.2 การเปลี่ยนกรอบเป้าหมาย (ในคุณสมบัติโครงการ) เป็น 4.7.2 แก้ไขสิ่งนี้ให้ฉัน ขอบคุณอดัม!
iCode


3

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


3

คุณตรวจสอบการตั้งค่าเครื่องมือจัดการการกำหนดค่าหรือไม่ ในกล่องโต้ตอบการตั้งค่าโครงการที่มุมบนขวา

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


ฉันตรวจสอบแล้ว โครงการทั้งหมดมีการกำหนดค่าเดียวกัน
nightcoder

2

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


1
การลบการอ้างอิงจากโปรเจ็กต์อื่น ๆ (เช่น UI และโปรเจ็กต์การทดสอบของฉัน) การแก้ไขข้อผิดพลาด (ในโปรเจ็กต์หลัก) การสร้างและการเพิ่มการอ้างอิงเหล่านั้นอีกครั้งทำให้ฉันเป็นเคล็ด
Ken Pespisa

2

เราเพิ่งพบปัญหานี้หลังจากอัปเกรดเป็น Office 2010 จาก Office 2007 - เราต้องเปลี่ยนการอ้างอิงในโครงการของเราด้วยตนเองเป็น Office Interops เวอร์ชัน 14 ที่เราใช้ในบางโครงการ

หวังว่าจะช่วยได้ - เราใช้เวลาสองสามวันในการคิดออก


2

ในกรณีของฉันมันเกิดจากสองสิ่ง (VS.2012):

1) หนึ่งในโครงการได้รับการกำหนดค่าสำหรับ AnyCPU แทนที่จะเป็น x86

2) โครงการที่อ้างถึงไม่มีการทำเครื่องหมายในช่อง "สร้าง"

ตรวจสอบ Build ของคุณ | เครื่องมือจัดการการกำหนดค่าเพื่อดูภาพรวมของสิ่งที่กำลังสร้างและแพลตฟอร์มใด ตรวจสอบให้แน่ใจว่าคุณได้ตรวจสอบทั้ง Debug & Release เนื่องจากอาจมีการตั้งค่าที่แตกต่างกัน


2

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

อีกครั้งนี้เป็นเพียงสิ่งที่ก่อให้เกิดข้อผิดพลาดสำหรับฉัน


2

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

โซลูชันดูเหมือนจะดี แต่ไฟล์. csproj ยังคงมีโครงการเหล่านั้นหลายครั้งเพื่อเป็นข้อมูลอ้างอิง

ดูเหมือนว่า VS ไม่ทำความสะอาดไฟล์นั้นอย่างเหมาะสม มันยังคงอ้างถึงโครงการที่ถูกลบออกภายใต้ประทุน เมื่อลบการอ้างอิงออกจากไฟล์ csproj ด้วยตนเองทั้งหมดจะทำงานอีกครั้ง! wohoo


2

ปัญหานี้เกิดจากไฟล์ pdb หรือ CodeContracts

วิธีแก้ไข:

  1. ทำความสะอาดโฟลเดอร์ผลลัพธ์ของคุณและสร้างโซลูชันใหม่

  2. กำหนดค่า CodeContracts ใหม่หรือปิดใช้งานสำหรับการสร้างชั่วคราว


2

เรามีปัญหานั้นค่อนข้างบ่อย แต่มีการอ้างอิงถึงโครงการ C ++ / CLI จากโครงการ C # เท่านั้น เห็นได้ชัดว่าเป็นข้อผิดพลาดที่อยู่ลึกลงไปใน Visual Studio ที่ Microsoft ตัดสินใจที่จะไม่แก้ไขเพราะมัน 'ซับซ้อนเกินไป' และพวกเขาสัญญาว่าจะยกเครื่องระบบสร้าง C ++ ซึ่งตอนนี้มีเป้าหมายสำหรับ Visual Studio 2010

นั่นเป็นเวลาที่ผ่านมาและบางทีการแก้ไขอาจเข้าสู่ Visual Studio 2008 ฉันไม่ได้ติดตามมันอีกต่อไป อย่างไรก็ตามวิธีแก้ปัญหาทั่วไปของเราคือ

  • เปลี่ยนการกำหนดค่า
  • รีสตาร์ท Visual Studio
  • สร้างโซลูชัน

หลังจากปัญหานี้หายไปตลอดกาลหรือเพียงชั่วคราว? แล้ว "switch configuration" หมายความว่าอย่างไร? ตัวอย่างเช่นฉันใช้การกำหนดค่าการดีบักเสมอ ฉันควรทำอย่างไรดี?
nightcoder

มันหายไปชั่วคราว จริงๆแล้วอาจไม่ใช่วิธีแก้ปัญหาสำหรับคุณหากคุณไม่เคยสลับการกำหนดค่าระหว่างการดีบักและการเปิดตัว หรือเปลี่ยนไปปล่อยแล้ว debug อาจจะแก้ไขได้ใครจะไปรู้;)
OutOfMemory

เมื่อไม่กี่วันที่ผ่านมาฉันเปลี่ยนเป็นรีลีสสร้างโซลูชันแล้วเปลี่ยนกลับไปที่การดีบัก หลังจากนี้ปัญหาก็กลายพันธุ์ :): ตอนนี้ฉันได้รับข้อผิดพลาดเพียง 1 ข้อแทนที่จะเป็นไม่กี่ข้อ - เหมือนกับโครงการอื่น ๆ ได้รับการ "แก้ไข" :)
nightcoder

2

ฉันมีปัญหาเดียวกันกับตัวเอง

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

ดังนั้นฉันจึงเปลี่ยนทุกอย่างเป็นเวอร์ชัน 4.5 และใช้งานได้อีกครั้ง


นี่เป็นวิธีแก้ปัญหาเดียวกับที่ฉันพบในขณะที่มีปัญหานี้ การอ้างอิงบางส่วนใช้ Framework ที่สูงกว่าแอปพลิเคชันพื้นฐานของฉันเมื่อฉันเปลี่ยน Framework ในแอปพลิเคชันพื้นฐานเป็น 4.5.2 (เช่นเดียวกับการอ้างอิงอื่น ๆ ) ปัญหาก็หายไป แม้ว่า VS ไม่ได้พูดอะไรเกี่ยวกับเฟรมเวิร์กเวอร์ชันต่างๆ ..
NoLifeKing

1

ฉันจำได้ว่าเคยมีปัญหาคล้าย ๆ กันเมื่อสองสามเดือนก่อน ฉันแก้ไขชั่วคราวโดยการคัดลอก DLL ที่อ้างอิงไปยังโฟลเดอร์ Release ดังนั้นจึงเป็นไปตามความคาดหวังของ Visual Studio ต่อมาฉันค้นพบการอ้างอิงถึง DLL ของรุ่นในรหัสจริงของฉัน คุณควรลองค้นหาทั้งโปรเจ็กต์สำหรับ \ release \ project.dll

นอกจากนี้ฉันสังเกตเห็นว่าบางครั้งโครงการทดสอบหน่วย Visual Studio ใส่แอตทริบิวต์ "DeploymentItem" ในแต่ละวิธีการทดสอบที่ชี้ไปที่ DLL เป้าหมายของคุณและหากคุณสลับระหว่าง Debug และ Release Visual Studio อาจสับสนได้หาก DLL ไม่อยู่อีกต่อไป ในตำแหน่งที่คาดไว้ จากประสบการณ์ของฉันแอตทริบิวต์เหล่านี้สามารถลบได้อย่างปลอดภัยหากคุณไม่ได้วางไว้ที่นั่นด้วยตัวคุณเองเป็นส่วนหนึ่งของสถานการณ์ "การปรับใช้ครั้งเดียว"


1

ฉันมีปัญหานี้และเป็นเพราะวิธีการที่ไม่ถูกต้องในไลบรารีที่กระทำผิด (dll) ที่ไม่ส่งคืนค่าเช่น

public bool DoSomething()
{
   //I never bothered putting code here....

}

เมื่อฉันยอมรับสิ่งนี้จากการรวบรวมทุกอย่าง :)


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

1

บางครั้ง VS2010 เปลี่ยนการกำหนดค่าของฉันจาก CPU ใด ๆ เป็นแพลตฟอร์มผสม เมื่อสิ่งนี้เกิดขึ้นฉันได้รับข้อความแสดงข้อผิดพลาดนี้

ในการแก้ไขฉันเปลี่ยนกลับไปใช้ CPU ใด ๆ :
1. คลิกขวาที่โซลูชันและเลือกคุณสมบัติ
2. คลิกที่ Configuration Properties จากนั้นคลิกปุ่ม Configuration Manager ...
3. ภายใต้แพลตฟอร์มโซลูชันที่ใช้งานอยู่ให้เลือก CPU ใด ๆ


1

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


1

ฉันลงเอยด้วยการลบการอ้างอิงของฉัน (ฉันได้เพิ่มอย่างถูกต้องโดยใช้แท็บโปรเจ็กต์และพวกเขาเคยสร้างได้ดี) แก้ไขไฟล์. csproj ของฉันด้วยมือและลบรายการแปลกประหลาดที่ไม่ได้เป็นของ - และตั้งค่าผลลัพธ์ของฉันสำหรับการดีบักและ release, x86 และ x64 และ cpu ทั้งหมดเป็น "\ bin" - ฉันสร้างมันครั้งเดียวจากนั้นเพิ่มการอ้างอิงอีกครั้ง (อีกครั้งโดยใช้แท็บโปรเจ็กต์) และทุกอย่างก็เริ่มทำงานอีกครั้งสำหรับฉัน ไม่ต้องรีสตาร์ท Visual Studio เลย


1

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


1

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


1
ว้าว! ฉันลองใช้ตัวเลือกมากมายแล้วไม่มีอะไรได้ผล แต่สิ่งนี้แก้ไขปัญหาได้! ขอบคุณเพื่อน :)
Tharindu

0

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


0

สิ่งเดียวกันที่เกิดขึ้นกับฉันในวันนี้ตามที่วิดาร์อธิบายไว้

ฉันมีข้อผิดพลาด Build ใน Helper Library (ซึ่งอ้างอิงโดยโปรเจ็กต์อื่น) และแทนที่จะบอกฉันว่ามีข้อผิดพลาดใน Helper Library คอมไพลเลอร์จะแสดงรายการข้อผิดพลาดประเภท MetaFile ที่ไม่พบ หลังจากแก้ไขข้อผิดพลาด Build ใน Helper Library แล้วข้อผิดพลาด MetaFile ก็หายไป

มีการตั้งค่าใด ๆ ใน VS เพื่อปรับปรุงสิ่งนี้หรือไม่?


0

ผมมีปัญหาเหมือนกัน. ฉันสังเกตเห็นว่าบริบทฐานข้อมูลของฉัน (EF4) ที่อยู่ในโครงการ dll ไม่รู้จักด้วยเหตุผลบางประการ ฉันลบมันและสร้างอันอื่นแทน และนั่นแก้ไขให้ฉัน


0

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

แอปพลิเคชัน Windows Forms ของฉันมีการอ้างอิงถึงตัวเองโดยบังเอิญ แปลก.

เมื่อนำออกแล้วข้อผิดพลาดก็หายไป

มีการเพิ่มการอ้างอิงทุกครั้งที่ฉันลากตัวควบคุมผู้ใช้ซึ่งอยู่ในโครงการ Windows Forms เองไปยังแบบฟอร์ม


0

ผมมีปัญหาเหมือนกัน. การลบและเพิ่ม dll ด้วยตนเองไม่ได้ช่วยอะไร ClassLibraries ไม่ได้คอมไพล์สำหรับโปรเจ็กต์ทั้งหมดและหายไปในโฟลเดอร์... \ bin \ Debugสำหรับโปรเจ็กต์ [เพราะฉันทำความสะอาดโซลูชันโดยไม่ได้ตั้งใจ] ตั้งแต่ห้องสมุดชั้นไม่ได้รวบรวมวิธีการว่าอาจจะมีบางอย่างที่ใดที่หนึ่งในข้อผิดพลาดหนึ่งในโครงการย่อยเหล่านั้น

วิธีแก้ไข:เนื่องจาก dll ของฉันอยู่ที่นั่นสำหรับโฟลเดอร์... \ bin \ Releaseฉันจึงพยายามสร้างใหม่ในโหมดรีลีสและพบข้อผิดพลาดในหนึ่งบรรทัดในหนึ่งในโปรเจ็กต์ย่อย การแก้ไขข้อผิดพลาดและการสร้างโซลูชันใหม่ได้กำจัดข้อผิดพลาดของการสร้าง


0

สำหรับฉัน Visual Studio ได้สร้าง projectname.v11 ประเภท "Visual Studio Solution User Options" ฉันลบไฟล์นี้และรีสตาร์ทและทุกอย่างเรียบร้อยดี

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