Cara menemukan alasan Build gagal tanpa kesalahan atau peringatan

144

Saya memiliki Aplikasi Web yang berisi referensi ke layanan WCF.

Saat membangun menggunakan Visual Studio 2010, Build gagal tanpa kesalahan atau peringatan. Namun membangun .csprojpenggunaannya MsBuildberhasil.

Tidak tahu apa yang harus saya coba di Visual Studio, untuk menyelesaikan / mendiagnosis masalah. Bisakah Anda membantu?

EDIT:

Saya mengetahui bahwa bangunannya telah gagal,

  1. Dari teks yang ditampilkan di bilah status.
    masukkan deskripsi gambar di sini

  2. Dari jendela keluaran:

    ========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========
Abhijeet
sumber
5
bagaimana Anda tahu bahwa bangunan Anda gagal?
Sam saya berkata Reinstate Monica
5
Apakah ada sesuatu di tab output?
Malice
15
Cobalah untuk meningkatkan verbositas dari Output Window di Visual Studio. Ini dapat membantu menentukan masalahnya. Cara meningkatkan tingkat verbositas: blogs.msdn.com/b/saraford/archive/2008/10/07/…
Maxim Kornilov
6
Sudahkah Anda mencoba me-restart VS2010 atau bahkan me-reboot PC Anda?
comecme
2
@NahuelI. Saya mendapat masalah serupa sekali lagi di proyek lain, ketika saya mencari stackoverflow saya mendapatkan pertanyaan saya sendiri kembali :-)
Abhijeet

Jawaban:

119

Saya hanya mengalami situasi yang sama. Dalam kasus saya, tindakan kustom (dari paket MSBuildVersioning tersedia di Nuget.org - http://www.nuget.org/packages/MSBuildVersioning/ ) yang muncul di target file SebelumBuild file csproj gagal tanpa memicu pesan kesalahan apa pun di tempat normal.

Saya dapat menentukan ini dengan menetapkan "MSBuild project build output verbosity" (di tab Alat Visual Studio terbaru [Path: Tools> Options> Build and Run ]) ke " Diagnostic " seperti yang ditunjukkan di bawah ini. Ini kemudian menunjukkan bahwa tindakan khusus (dalam kasus saya HgVersionFile) adalah yang gagal.

Tangkapan layar dari Visual Studio menunjukkan pengaturan yang dimodifikasi.

Richard J Foster
sumber
2
Sangat baik menemukan Richard - Informasi yang sangat berguna ketika Anda mengatur kedua tingkat verbositas ke diagnostik
Dai Bok
3
Bagi siapa pun yang tidak mengerti seperti saya: untuk menggunakan metode ini, Anda mungkin harus mencari konten dari jendela output. Kesalahan build saya disembunyikan oleh #pragma warning disablepernyataan dan hanya terlihat ketika saya mencari 'error' di jendela output.
sirdank
Setelah mengatur verbosity saya ke diagnostik, saya menemukan saya mendapatkan System.OutOfMemoryException. Saya menggunakan 98% dari memori komputer saya yang tersedia. Ini jawaban yang bagus!
TxRegex
1
Ini memecahkan masalah pada VisualStudio 2017 juga. Terima kasih banyak.
H. Aydin
1
Bagi saya, saya menggunakan Queue New Build untuk membangun TFS dan dialog Queue Build memiliki verbosity pada tab kedua saya bisa muncul dan kemudian melihat masalah di log build.
AaronLS
135

Build + Intellisense menelan pesan kesalahan. Memilih Bangun Saja menampilkannya.

Tangkapan layar

Abu Abdullah
sumber
Baru saja masuk ke situasi di mana tidak ada yang menunjukkan kesalahan ini :(
Imad
1
Wow, ini bekerja untuk saya bagaimana sih ini di versi baru 2019 VS. Terima kasih sobat!
Carter
1
@AbuAbdullah Bekerja untuk saya. Pekerjaan bagus dalam membantu orang lain.
nam
terima kasih, selamatkan hari saya
Bikram Limbu
59
  • Jika solusi berisi lebih dari satu proyek, coba bangun satu per satu.
  • Coba mulai ulang Visual Studio.
  • Coba mulai ulang Komputer.
  • Coba " Bangun kembali semua "
  • Coba " Bersih Solusi " kemudian menghapus Anda " vspscc " file dan " vssscc " file dan kemudian restart Visual Studio dan kemudian " Rebuild All ".
Sasse
sumber
105
Dan ketika itu tidak membantu haruskah saya mencari pekerjaan baru?
Alex Zhukovskiy
2
Memulai kembali VS2013 membantu saya. Saya sedang mengerjakan VM dengan sumber daya terbatas tapi saya tidak yakin apakah itu ada hubungannya dengan itu.
Jmaurier
2
Anda tidak dapat membersihkan solusinya jika Anda mengalami masalah ini.
H. Aydin
1
Yang membantu saya adalah menutup semua instance VS (tidak cukup untuk menutup yang rusak), lalu hapus .vsfolder dan mulai VS lagi.
EliSherer
22

VS (2013 Pro, Win 8.1) memulai kembali melakukannya untuk saya.

Ignas Vyšnia
sumber
VS 2015 Community Win 7 dengan Proyek MVC tunggal. Resolusi yang sama.
maplemale
2
VS 2017 Komunitas Win 10. Saya rasa saya harus mencoba mematikannya dan hidup lagi sebelum mencari solusi!
DreamTeK
12

Hapus folder .vs & restart VS, bekerja untuk saya

masukkan deskripsi gambar di sini

Arun Prasad ES
sumber
9

Saya ingin memperluas jawaban Sasse .

Untuk memperbaiki masalah dengan Visual Studio 2015 Pembaruan 2 Saya harus membangun setiap proyek satu per satu dan melihat jendela output setelah setiap membangun.

Satu proyek memberi saya

"Tipe atau nama namespace 'SomeNamespace' tidak ada di namespace 'BeforeSomeNamespace' (apakah Anda kehilangan referensi perakitan?)".

Tidak ada kesalahan di jendela Daftar Kesalahan tetapi majelis memiliki tanda peringatan kuning di bawah "Referensi".

Saya kemudian melihat bahwa proyek referensi menargetkan 4.5.1 dan proyek referensi 4.6.1. Mengubah 4.6.1 ke 4.5.1 memungkinkan keseluruhan bangunan berhasil.

pengguna764754
sumber
1
Ya, membangun sebuah proyek pada satu waktu mungkin tidak perlu, tetapi satu hal yang pasti: perhatikan dengan teliti jendela keluaran (lebih baik lagi salin / tempel ke notepad dan gunakan Ctrl + F find) untuk kata "hilang". Itu tidak muncul di daftar kesalahan, tapi itu pasti memecahkan solusi Anda. -.-
Dovydas Navickas
5

Tidak ada yang berfungsi untuk saya jadi saya menghapus file .suo, restart VS, membersihkan yang diproyeksikan, dan kemudian build akan bekerja.

Andy
sumber
5

Tampaknya ada beberapa jawaban untuk pertanyaan ini, jadi saya akan menambahkan jawaban saya dari pengalaman pribadi dengan harapan ini akan menghemat waktu / stres seseorang.

Pastikan semua proyek dalam solusi Anda menargetkan versi .NET yang sama.

Mirip dengan OP, ada 0 kesalahan tetapi build tetap gagal. Namun, ada satu entri peringatan (terkubur di antara beberapa ratus peringatan XML yang tidak berguna ...) yang mengatakan bahwa satu proyek menargetkan versi .NET yang berbeda dari proyek yang merujuknya. Keseluruhan masalah adalah bahwa satu proyek dalam solusi saya menargetkan .NET 4.5.2, ketika sisanya menargetkan 4.5.1. Ini harus bekerja bahkan dengan perbedaan ini (karenanya mengapa itu hanya peringatan) tapi sayangnya, itu merusak build.

Bagian yang aneh adalah bahwa itu dibangun / berjalan dengan baik untuk sementara waktu, tetapi tiba-tiba bangunan itu mulai gagal satu kali menyebabkan masalah ini. Tidak yakin apa yang saya lakukan untuk mulai mengeluh tentang perbedaan versi .NET target, tapi saya merasa bahwa hanya ada beberapa misteri di Visual Studio yang tidak akan pernah terpecahkan.

Alan Thomas
sumber
1
Ternyata saya telah menambahkan proyek baru dan memiliki versi .Net framework framework yang berbeda - Saya memperbaikinya dan, meskipun build masih gagal, saya kemudian dapat melihat kesalahan yang merusak build. Terima kasih.
Fijjit
4

Pergi ke jendela keluaran, cari 'kesalahan' di jendela keluaran, TADA

Mahdi Khalili
sumber
3

Pertama "Bersihkan Solusi", kemudian Bangun kembali soln.

Jika tidak berhasil tutup Solusi dan mulai ulang solusinya.

Cobalah hal-hal ini, harapan pasti berhasil.

Santosh K
sumber
3

Pada kemungkinan lain adalah bahwa Visual Studio perlu dijalankan sebagai Administrator, ini mungkin terkait dengan penggunaan ke server IIS lokal atau kebutuhan penyebaran lainnya.

Bill Yang
sumber
3

ini bisa terjadi ketika salah satu proyek yang direferensikan adalah versi yang lebih tinggi dari .NET framework daripada proyek Anda saat ini.

mcmillab
sumber
3

Saya memiliki masalah yang sama dan saya melacak masalah ini hingga ke opsi Daftar Kesalahan "Build + Intellisense".

Jika opsi ini dipilih maka tidak ada kesalahan yang ditampilkan dalam daftar. Alihkan ke " Build Only " dan kesalahan muncul seperti yang diharapkan.

Itu terlihat seperti bug di Visual Studio. Restart studio visual menyelesaikan masalah ini .

Christlin Panneer
sumber
2

Saya memiliki masalah yang sama setelah menambahkan proyek baru (disebut "TestCleaner") ke solusi saya: Build gagal, tidak ada kesalahan.

Saya meningkatkan verbositas keluaran (lihat instruksi Richard J Foster) dan mencari output untuk "gagal". Saya segera menemukan proyek mana yang gagal, dan mengapa: proyek "TestRunner" gagal dengan " error CS0246: Tipe atau nama namespace 'TestCleaner' tidak dapat ditemukan" (meskipun tidak ada masalah yang disorot dalam kode).

Memeriksa referensi TestRunner, tentu saja referensi ke TestCleaner ditandai sebagai belum terselesaikan, dan jalurnya hilang dari properti referensi. Menghapus dan menambahkan kembali tidak memperbaikinya. Sekali lagi, tidak ada penjelasan mengapa.

referensi yang belum terselesaikan

Saya akhirnya menemukan penyebabnya: "TestCleaner" menggunakan kerangka kerja target yang berbeda dengan proyek lainnya. Itu .Net 4.5.2; yang lainnya 4,5.

Ben Whitmore
sumber
2

Hanya demi penyelesaian dan mungkin membantu seseorang menemukan kesalahan yang sama lagi di masa depan, saya menggunakan antarmuka metro Mahapps dan mengubah XAML dari satu jendela, tetapi lupa mengubah kelas parsial dalam kode di belakang. Jika demikian, build gagal tanpa kesalahan atau peringatan, dan saya dapat mengetahuinya dengan meningkatkan verbositas output dari pengaturan:

Panel kesalahan

panel output

mcy
sumber
5
juga pilih 'bangun saja' bukan 'bangun + intellisense' di filter kesalahan.
niico
2

Saya memiliki masalah yang sama. Jendela daftar kesalahan memiliki 2 dropdown "Tampilkan item yang terkandung oleh" dan "Tampilkan masalah yang dihasilkan". Nama-nama ini terlihat setelah melayang di atas dropdown. Dropdown "Tampilkan masalah yang dihasilkan" disetel ke "Build + IntelliSense" dan setelah diubah menjadi "Build Only" kesalahan muncul di daftar.

jakubiszon
sumber
2

Bagi saya, itu Target Framework itulah masalahnya.

Proyek saya Target Frameworkadalah 4.5.2dan proyek yang dirujuk Target Frameworkadalah4.6.1 .

Setelah saya memperbarui proyek saya Target Frameworkke 4.6.1, masalah diperbaiki.

Ankush Jain
sumber
1

Saya menghadapi masalah yang sama! Hapus folder bin dan mulai kembali VS. Itu saja. diuji dalam VS 2013.

John
sumber
Ketika saya mencoba untuk menyelesaikan ini dengan menghapus bin dan folder obj itu memperbaikinya. Saya juga memerlukan hak admin untuk menghapus folder obj sehingga sesuatu yang sangat aneh terjadi.
DAG
1

Apa yang menyelesaikannya bagi saya adalah menghapus .vs folder dari akar solusi dan memulai kembali Visual Studio.

Mungkin juga penting untuk mengatakan bahwa meskipun kesalahan tidak ditampilkan di panel Daftar Kesalahan, mereka masih ada di Output dari Build.

Ronald Rey
sumber
1

Cobalah membangun proyek Anda dari baris perintah Powershell:

dotnet build

Kemudian Anda dapat melihat kesalahan dalam output baris perintah bahkan jika Visual Studio sedang bermain petak umpet dengan pesan galat build.

pengguna3810867
sumber
0

Ini terjadi pada saya setelah menambahkan halaman baru ke proyek asp.net.

Apa yang saya lakukan adalah mengecualikan halaman, membuatnya berhasil dibangun kembali.

Kemudian saya menambahkan kembali halaman dengan semua kode berkomentar. Keberhasilan.

Lalu saya uncommented sedikit demi sedikit kode dan kemudian semuanya berhasil.

toddmo
sumber
0

Saya memiliki masalah yang sama setelah menghapus beberapa formulir. Kesalahan muncul begitu saya masuk ke kode dan melakukan "Tampilkan Definisi" untuk salah satu kontrol yang saya hapus.

Saya juga menargetkan kerangka kerja yang lebih tinggi pada salah satu proyek saya, sehingga mungkin menjadi masalah juga.

Dennis Kuypers
sumber
0

Saya sudah mencoba semua tetapi tidak ada yang berhasil dalam kasus saya maka saya telah mengubah pengaturan yang disebutkan ini yang menyelesaikan masalah dengan cukup baik bagi saya. Coba Jika bisa membantu pemirsa yang terakhir. Pengaturan ini dapat bervariasi dalam situasi Anda, tetapi pastikan membangun semua DLL termasuk dengan pengaturan konfigurasi yang sama yang Anda simpan pada awalnya (disebutkan dalam gambar.).Pengaturan konfigurasi

Gambar di sini.

Bersulang!

Iqra.
sumber
0

Jika paket nuget 'Microsoft.Net.Compiler' diinstal, pastikan itu sesuai dengan versi Visual Studio Anda (versi Build Tools).

Versi 1.x berarti C # 6.0 (Visual Studio 2015 dan pembaruan). Misalnya, 1.3.2

Jadi jangan upgrade ke versi di atas 1.x jika Anda menggunakan VS2015

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

Roman M
sumber
0

Saya punya proyek yang sangat tua di mesin yang lebih tua. Proyek dibangun dengan benar ketika saya mematikan mesin. Hari ini, saya mendapatkan error build tetapi tidak ada pesan error. Setelah mencoba beberapa saran dari atas, tidak berhasil.

Di Visual Studio 2015, saya menyalakan MSBuild Detail di bawah ALAT> Pilihan> Proyek dan Solusi> Bangun dan Jalankan

Ini memberi saya beberapa detail tentang build tetapi tidak ada kesalahan. Setelah itu saya mencoba memeriksa Ekstensi dan pembaruan (Alat> Ekstensi dan Pembaruan) dan menemukan beberapa di antaranya yang perlu diperbarui.

Paket Nuget adalah biang keladinya, setelah memperbarui Nuget - build berhasil.

masukkan deskripsi gambar di sini

spicet
sumber
0

Ini mungkin karena perbedaan versi reporter di proyek Anda dan VS

Roohi Ali
sumber
3
Ini adalah komentar
Ivan Kaloyanov
0

Karena semuanya tidak berfungsi, ditemukan bahwa kesalahan tidak muncul ketika membuka proyek sebagai solusi (.sln), sedangkan kesalahan menunjukkan ketika membuka proyek sebagai proyek.

Mosta
sumber
0

Saya memiliki masalah yang sama, saya mengubah Tools -> Options -> Projects and Solutions / Build and Run -> Proyek MSBuild membangun log file verbosity [ Diagnostic ]. Opsi ini menunjukkan kesalahan dalam log, karena beberapa alasan VS saya tidak menampilkan Kesalahan di tab Kesalahan!

masukkan deskripsi gambar di sini

Lakukan pengaturan di atas dan salin keluaran di notepad / texteditor dan cari kesalahan. Ini akan menampilkan semua kesalahan.

Jenish Zinzuvadiya
sumber
0

Mulai ulang Visual Studio bekerja untuk saya. Coba juga restart Visual Studio secara normal (Tidak Jalankan sebagai Administrator). Coba Restart Sistem dan ulangi langkah di atas.

Juned Khan Momin
sumber
0

Cara berbeda untuk mereproduksi gejala ini:

Saya menambahkan proyek baru ke solusi yang ada dan output build melaporkan kesalahan seperti "tipe atau nama namespace X tidak dapat ditemukan ..." tetapi tidak ada kesalahan yang disajikan dalam daftar kesalahan.

Kelas-kelas yang saya maksudkan ada di proyek lain (yang direferensikan) dalam solusi yang sama.

Ternyata saya secara tidak sengaja telah memilih versi .net sebelumnya di proyek baru. Setelah saya mengubah ke versi yang sama dengan proyek lainnya, semuanya dibangun tanpa kesalahan.

Devosaur
sumber