วิธีค้นหาสาเหตุของการสร้างล้มเหลวโดยไม่มีข้อผิดพลาดหรือคำเตือนใด ๆ


145

ฉันมี WebApplication ซึ่งมีการอ้างอิงถึงบริการ WCF

ในขณะที่การสร้างโดยใช้ Visual Studio 2010, Build ล้มเหลวโดยไม่มีข้อผิดพลาดหรือคำเตือน อย่างไรก็ตามการสร้างการ.csprojใช้MsBuildนั้นประสบความสำเร็จ

ไม่สามารถทราบได้ว่าฉันควรลองอะไรใน Visual Studio เพื่อแก้ไข / วินิจฉัยปัญหา คุณช่วยได้ไหม

แก้ไข:

ฉันพบว่างานสร้างล้มเหลว

  1. จากข้อความที่แสดงในแถบสถานะ
    ป้อนคำอธิบายรูปภาพที่นี่

  2. จากหน้าต่างเอาต์พุต:

    ========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========

5
คุณจะรู้ได้อย่างไรว่างานสร้างของคุณล้มเหลว
แซมฉันว่า Reinstate Monica

5
มีอะไรในแท็บผลลัพธ์หรือไม่
Malice

15
ลองเพิ่ม verbosity ของหน้าต่างผลลัพธ์ใน Visual Studio สามารถช่วยในการระบุปัญหา วิธีเพิ่มระดับการใช้คำฟุ่มเฟื่อย: blogs.msdn.com/b/saraford/archive/2008/10/07/…
Maxim Kornilov

6
คุณลองรีสตาร์ท VS2010 หรือแม้กระทั่งรีบูตเครื่อง PC ของคุณ?
comecme

2
@NahuelI ฉันมีปัญหาที่คล้ายกันอีกครั้งในโครงการอื่นเมื่อฉันค้นหา stackoverflow ฉันได้รับคำถามของฉันเองกลับมา :-)
Abhijeet

คำตอบ:


120

ฉันเพิ่งเจอสถานการณ์ที่คล้ายกัน ในกรณีของฉันการกระทำที่กำหนดเอง (จากแพคเกจ MSBuildVersioning มีอยู่ใน Nuget.org - http://www.nuget.org/packages/MSBuildVersioning/ ) ซึ่งปรากฏในไฟล์ csproj ของ BeforeBuild เป้าหมายล้มเหลวโดยไม่ต้องเรียกใช้ข้อความแสดงข้อผิดพลาดใน สถานที่ปกติ

ฉันสามารถตรวจสอบสิ่งนี้ได้โดยการตั้งค่า"MSBuild project verbosity output build" (ในแท็บเครื่องมือล่าสุดของ Visual Studio [Path: เครื่องมือ> ตัวเลือก> Build and Run ]) เป็น " Diagnostic " ดังที่แสดงด้านล่าง นี่แสดงให้เห็นว่าการกระทำที่กำหนดเอง (ในกรณีของฉัน HgVersionFile) เป็นสิ่งที่ล้มเหลว

การดักจับหน้าจอจาก Visual Studio แสดงการตั้งค่าที่แก้ไข


2
ค้นหา Richard ที่ยอดเยี่ยม - ข้อมูลที่มีประโยชน์จริง ๆ เมื่อคุณตั้งค่าระดับ verbosity ทั้งสองให้เป็นค่าวินิจฉัย
Dai Bok

3
สำหรับใครก็ตามที่ไร้เดียงสาเหมือนฉัน: ใช้วิธีนี้คุณอาจต้องค้นหาเนื้อหาของหน้าต่างผลลัพธ์ ข้อผิดพลาดในการสร้างของฉันถูกซ่อนโดย#pragma warning disableข้อความสั่งและจะปรากฏเฉพาะเมื่อฉันค้นหา 'ข้อผิดพลาด' ในหน้าต่างผลลัพธ์
sirdank

หลังจากตั้งค่าการใช้คำฟุ่มเฟือยเป็นวินิจฉัยฉันพบว่าฉันได้รับ System.OutOfMemoryException ฉันใช้หน่วยความจำที่มีอยู่ในคอมพิวเตอร์ 98% นี่เป็นคำตอบที่ยอดเยี่ยม!
TxRegex

1
วิธีนี้จะช่วยแก้ไขปัญหาใน VisualStudio 2017 ได้เช่นกัน ขอบคุณมาก.
H. Aydin

1
สำหรับฉันฉันใช้คิวสร้างใหม่เพื่อสร้างบน TFS และกล่องโต้ตอบสร้างคิวมี verbosity บนแท็บที่สองที่ฉันสามารถเปิดขึ้นแล้วเห็นปัญหาในบันทึกการสร้าง
AaronLS

135

Build + Intellisenseกลืนข้อความแสดงข้อผิดพลาด เลือกBuild เท่านั้นแสดงพวกเขา

ภาพหน้าจอ


เพียงแค่เข้าไปในสถานการณ์ที่ไม่มีของเหล่านี้แสดงให้เห็นถึงข้อผิดพลาด :(
Imad

1
ว้าวสิ่งนี้ได้ผลกับฉันในเรื่องของสิ่งที่เกิดขึ้นกับรุ่นใหม่ของ VS 2019 ขอบคุณคน!
Carter

1
@AbuAbdullah ทำงานให้ฉัน เก่งในการช่วยเหลือผู้อื่น
Nam

ขอบคุณบันทึกวันของฉัน
Bikram Limbu

59
  • หากโซลูชันมีมากกว่าหนึ่งโครงการให้ลองสร้างโครงการทีละโครงการ
  • ลองรีสตาร์ท Visual Studio
  • ลองรีสตาร์ทคอมพิวเตอร์
  • ลอง " สร้างใหม่ทั้งหมด "
  • ลอง " โซลูชั่นสะอาด " แล้วเอาของคุณ " vspsccไฟล์" และ " vssscc " ไฟล์แล้วรีสตาร์ท Visual Studio และ " สร้างใหม่ทั้งหมด "

105
และเมื่อไม่ช่วยฉันควรหางานใหม่?
Alex Zhukovskiy

2
เพิ่งเริ่มต้น VS2013 ช่วยฉันอีกครั้ง ฉันทำงานกับ VM ที่มีทรัพยากร จำกัด แต่ฉันไม่แน่ใจว่ามันเกี่ยวข้องกับมันหรือไม่
Jmaurier

2
คุณไม่สามารถล้างวิธีแก้ไขหากคุณประสบปัญหานี้
H. Aydin

1
สิ่งที่ช่วยฉันได้คือปิดอินสแตนซ์ทั้งหมดของ VS (ไม่เพียงพอที่จะปิดข้อบกพร่อง) จากนั้นลบ.vsโฟลเดอร์และเริ่ม VS อีกครั้ง
EliSherer

22

VS (2013 Pro, Win 8.1) รีสตาร์ททำเพื่อฉัน


VS 2015 ชุมชนชนะ 7 ด้วยโครงการ MVC เดียว มติเดียวกัน
maplemale

2
VS 2017 Community Win 10. ฉันเดาว่าฉันควรจะลองปิดและเปิดใหม่อีกครั้งก่อนค้นหาวิธีแก้ไข!
DreamTeK


9

ฉันต้องการที่จะขยายตัวในคำตอบของ Sasse

ในการแก้ไขปัญหาด้วยการอัปเดต Visual Studio 2015 2 ฉันต้องสร้างแต่ละโครงการทีละครั้งและดูที่หน้าต่างผลลัพธ์หลังจากแต่ละบิลด์

โครงการหนึ่งให้ฉัน

"ประเภทหรือชื่อเนมสเปซ 'SomeNamespace' ไม่มีอยู่ในเนมสเปซ 'BeforeSomeNamespace' (คุณขาดการอ้างอิงแอสเซมบลีหรือไม่)"

ไม่มีข้อผิดพลาดในหน้าต่างรายการข้อผิดพลาด แต่การชุมนุมมีสัญญาณเตือนสีเหลืองภายใต้ "อ้างอิง"

ฉันเห็นแล้วว่าโครงการอ้างอิงนั้นมีเป้าหมาย 4.5.1 และโครงการอ้างอิง 4.6.1 การเปลี่ยน 4.6.1 เป็น 4.5.1 อนุญาตให้บิลด์โดยรวมสำเร็จ


1
การสร้างโครงการในแต่ละครั้งอาจไม่จำเป็น แต่สิ่งหนึ่งที่แน่นอนคือ: ดูที่หน้าต่างแสดงผล (อย่างดี แต่คัดลอก / วางมันเพื่อ notepad และใช้ Ctrl + F ค้นหา) สำหรับคำว่า "หายไป" มันไม่ปรากฏในรายการข้อผิดพลาด แต่แน่นอนว่าเมื่อนรกแตกวิธีการแก้ปัญหาของคุณ -.-
Dovydas Navickas

5

ไม่มีอะไรทำงานให้ฉันดังนั้นฉันจึงลบไฟล์. suo, รีสตาร์ท VS, ทำความสะอาดโปรเจ็กต์แล้วจากนั้นบิลด์จะใช้งานได้


5

ดูเหมือนว่ามีหลายคำตอบสำหรับคำถามนี้ดังนั้นฉันจะเพิ่มของฉันจากประสบการณ์ส่วนตัวหวังว่ามันจะช่วยประหยัดเวลา / ความเครียดใครบางคน

ตรวจสอบให้แน่ใจว่าโครงการทั้งหมดในโซลูชันของคุณกำหนดเป้าหมายไปยัง. NET เวอร์ชันเดียวกัน

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

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


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


3

ประการแรก "ทำความสะอาดโซลูชัน" จากนั้นสร้างโซลูชันใหม่

หากไม่ได้ผลให้ปิดโซลูชันแล้วรีสตาร์ทโซลูชัน

ลองสิ่งเหล่านี้หวังว่าจะได้ผลแน่นอน


3

ในความเป็นไปได้อื่น ๆ คือ Visual Studio จำเป็นต้องเรียกใช้ในฐานะผู้ดูแลระบบซึ่งอาจเกี่ยวข้องกับการปรับใช้กับเซิร์ฟเวอร์ IIS ในเครื่องหรือการปรับใช้อื่น ๆ


3

สิ่งนี้สามารถเกิดขึ้นได้เมื่อโครงการหนึ่งที่อ้างอิงเป็น. NET Framework เวอร์ชันที่สูงกว่าโครงการปัจจุบันของคุณ


3

ฉันมีปัญหาเดียวกันนี้และฉันสืบปัญหานี้ไปที่ตัวเลือกรายการข้อผิดพลาด "Build + Intellisense"

หากเลือกตัวเลือกนี้จะไม่มีข้อผิดพลาดปรากฏขึ้นในรายการ สลับไปที่ " สร้างเท่านั้น " และข้อผิดพลาดปรากฏขึ้นตามที่คาดไว้

มันดูเหมือนข้อบกพร่องใน Visual Studio การรีสตาร์ท Visual Studio แก้ไขปัญหานี้


2

ฉันมีปัญหาที่คล้ายกันหลังจากเพิ่มโครงการใหม่ (เรียกว่า "TestCleaner") ในโซลูชันของฉัน: การสร้างล้มเหลวไม่มีข้อผิดพลาด

ฉันเพิ่ม verbosity เอาท์พุท (ดูคำแนะนำของ Richard J Foster) และค้นหาผลลัพธ์สำหรับ "ล้มเหลว" ฉันค้นพบว่าโครงการใดล้มเหลวอย่างรวดเร็วและทำไม: โครงการ "TestRunner" ล้มเหลวด้วย " ข้อผิดพลาด CS0246: ไม่พบชื่อประเภทหรือเนมสเปซ 'TestCleaner' (แม้ว่าจะไม่มีปัญหาถูกเน้นในรหัส)

การตรวจสอบการอ้างอิงของ TestRunner แน่นอนว่าการอ้างอิงไปยัง TestCleaner ถูกทำเครื่องหมายว่าไม่ได้รับการแก้ไขและเส้นทางขาดหายไปจากคุณสมบัติการอ้างอิง การลบและการเพิ่มอีกครั้งไม่สามารถแก้ไขได้ อีกครั้งไม่มีคำอธิบายว่าทำไม

การอ้างอิงที่ไม่ได้รับการแก้ไข

ในที่สุดฉันก็ค้นพบสาเหตุ: "TestCleaner" กำลังใช้เฟรมเวิร์กเป้าหมายที่แตกต่างกับโครงการอื่น มันคือ. Net 4.5.2; อื่น ๆ คือ 4.5


2

เพียงเพื่อความสมบูรณ์และอาจช่วยให้ใครบางคนพบข้อผิดพลาดเดียวกันอีกครั้งในอนาคตฉันใช้ Mahapps metro interface และเปลี่ยน XAML ของหน้าต่างเดียว แต่ลืมเปลี่ยนคลาสบางส่วนใน code-behind ในกรณีนี้บิลด์ล้มเหลวโดยไม่มีข้อผิดพลาดหรือคำเตือนและฉันสามารถค้นหาได้โดยเพิ่มการใช้คำฟุ่มเฟื่อยของเอาต์พุตจากการตั้งค่า:

บานหน้าต่างข้อผิดพลาด

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


5
เลือก 'สร้างเท่านั้น' ไม่ 'สร้าง + Intellisense' ในตัวกรองข้อผิดพลาด
niico

2

ผมมีปัญหาเหมือนกัน. หน้าต่างรายการข้อผิดพลาดมี 2 ดร็อปดาวน์ "แสดงรายการที่มีอยู่" และ "แสดงปัญหาที่สร้างขึ้น" ชื่อเหล่านี้สามารถมองเห็นได้หลังจากโฮเวอร์เหนือเมนูดรอปดาวน์ เมนูแบบเลื่อนลง "แสดงปัญหาที่สร้างขึ้น" ได้รับการตั้งค่าเป็น "Build + IntelliSense" และหลังจากเปลี่ยนเป็น "สร้างเฉพาะ" ข้อผิดพลาดที่ปรากฏในรายการ


2

สำหรับฉันมันTarget Frameworkเป็นปัญหา

โครงการของฉันTarget Frameworkเป็น4.5.2และการอ้างอิงของโครงการคือTarget Framework4.6.1

เมื่อฉันปรับปรุงโครงการของฉันTarget Frameworkไป4.6.1ปัญหาได้รับการแก้ไข


1

ฉันประสบปัญหาเดียวกัน! เพียงแค่โฟลเดอร์ bin VSลบและเริ่มต้นใหม่ของคุณ นั่นคือทั้งหมดที่ VS 2013การทดสอบใน


เมื่อฉันพยายามที่จะแก้ไขปัญหานี้โดยการลบ bin และ obj โฟลเดอร์มันแก้ไขมัน ฉันต้องการสิทธิ์ผู้ดูแลระบบในการลบโฟลเดอร์ obj ดังนั้นจึงมีบางสิ่งที่แปลกมากเกิดขึ้น
DAG

1

สิ่งที่แก้ไขได้สำหรับฉันคือการลบ.vsโฟลเดอร์ออกจากรากของโซลูชันและเริ่มต้น Visual Studio ใหม่

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


1

ลองสร้างโครงการของคุณจากบรรทัดคำสั่ง Powershell:

dotnet build

จากนั้นคุณสามารถเห็นข้อผิดพลาดใด ๆ ในเอาต์พุตบรรทัดคำสั่งแม้ว่า Visual Studio จะเล่นซ่อนและค้นหาพร้อมกับข้อความแสดงข้อผิดพลาดบิลด์


0

สิ่งนี้เกิดขึ้นกับฉันหลังจากเพิ่มหน้าใหม่ให้กับโครงการ asp.net

สิ่งที่ฉันทำคือยกเว้นหน้าเว็บให้สร้างใหม่อีกครั้งสำเร็จ

จากนั้นฉันก็เพิ่มหน้ากลับพร้อมรหัสทั้งหมดที่ใส่ความเห็น ความสำเร็จ

จากนั้นฉันก็ยกเลิกเครื่องหมายข้อคิดเห็นโค้ดทีละบิตแล้วก็ทำงานทั้งหมด


0

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

ฉันยังกำหนดเป้าหมายกรอบการทำงานที่สูงขึ้นในโครงการใดโครงการหนึ่งของฉันด้วยซึ่งอาจเป็นปัญหาเช่นกัน


0

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

ภาพที่นี่

ไชโย!


0

หากแพคเกจ nuget 'Microsoft.Net.Compilers' ได้รับการติดตั้งตรวจสอบให้แน่ใจว่าเหมาะสมกับเวอร์ชั่นของ Visual Studio ของคุณ (เวอร์ชั่นเครื่องมือสร้าง)

เวอร์ชั่น 1.x หมายถึง C # 6.0 (Visual Studio 2015 และอัปเดต) ตัวอย่างเช่น 1.3.2

ดังนั้นอย่าอัปเกรดเป็นเวอร์ชันด้านบน 1.x หากคุณใช้ VS2015

https://stackoverflow.com/a/44397905/3862615


0

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

ใน Visual Studio 2015 ฉันเปิด MSBuild โดยละเอียดภายใต้เครื่องมือ> ตัวเลือก> โครงการและโซลูชัน> สร้างและเรียกใช้

มันให้รายละเอียดบางอย่างเกี่ยวกับการสร้าง แต่ไม่มีข้อผิดพลาด หลังจากนั้นฉันพยายามตรวจสอบส่วนขยายและอัปเดต (เครื่องมือ> ส่วนขยายและอัปเดต) และพบว่าพวกเขาจำเป็นต้องอัปเดต

แพคเกจ Nugetเป็นผู้ร้ายหลังจากอัปเดต Nuget - build สำเร็จแล้ว

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


0

อาจเป็นเพราะผู้ดูรายงานรุ่นที่แตกต่างกันในโครงการและ VS ของคุณ


3
นี่คือความคิดเห็น
Ivan Kaloyanov

0

เนื่องจากทุกอย่างใช้งานไม่ได้พบว่าข้อผิดพลาดไม่แสดงเมื่อเปิดโครงการเป็นโซลูชัน (.sln) ในขณะที่ข้อผิดพลาดแสดงเมื่อเปิดโครงการเป็นโครงการ


0

ฉันมีปัญหาเดียวกันฉันเปลี่ยนเครื่องมือ->ตัวเลือก->โครงการและวิธีแก้ไข / สร้างและเรียกใช้-> การสร้าง verbosity ล็อกไฟล์การสร้างโครงการ MSBuild [การวินิจฉัย ] ตัวเลือกนี้แสดงข้อผิดพลาดในบันทึกเนื่องจากสาเหตุบางประการที่ VS ของฉันไม่แสดงข้อผิดพลาดในแท็บข้อผิดพลาด!

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

ทำการตั้งค่าด้านบนและคัดลอกผลลัพธ์ใน notepad / texteditor และค้นหาข้อผิดพลาด มันจะแสดงข้อผิดพลาดทั้งหมด


0

การเริ่มต้น Visual Studio ใหม่สำหรับฉัน ลองรีสตาร์ท Visual Studio ตามปกติ (ไม่เรียกใช้ในฐานะผู้ดูแลระบบ) ลองเริ่มระบบใหม่และทำซ้ำขั้นตอนข้างต้น


0

วิธีที่แตกต่างในการทำซ้ำอาการนี้:

ฉันเพิ่มโครงการใหม่ในโซลูชันที่มีอยู่และบิลด์เอาท์พุทรายงานข้อผิดพลาดเช่น "ไม่พบประเภทหรือชื่อเนมสเปซ X ... " แต่ไม่มีข้อผิดพลาดปรากฏในรายการข้อผิดพลาด

คลาสที่ฉันอ้างถึงอยู่ในโครงการอื่น ๆ (ที่ถูกอ้างอิง) ในโซลูชันเดียวกัน

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

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