Visual Studio 2015 atau 2017 menunjukkan galat IntelliSense tetapi kompilasi solusi

122

Kami sedang mengevaluasi Visual Studio 2015 baru dan mengalami masalah aneh dengan IntelliSense. Ketika saya mengompilasi solusi utama kami dengan studio baru, build berhasil, tetapi 6 kesalahan ditampilkan.

Saya menemukan bahwa itu bukan kesalahan nyata, tetapi hanya kesalahan yang masuk akal. Kode tersebut pasti benar dan semuanya berhasil dikompilasi. Namun kode tersebut ditandai merah dan kesalahan muncul dalam daftar kesalahan.

Semua 6 kesalahan memiliki asal yang sama. Ini panggilan konstruktor sederhana. Cukup aneh, tetapi ada juga beberapa kejadian dari konstruktor yang sama persis tanpa kesalahan.

Pesan kesalahan:

Code: CS1729
Message: '<the class>' does not contain a constructor that takes that many arguments.
Project: <the project name>
File: <the path to the file>

Studio baru diinstal pada Windows 7 yang baru diinstal tanpa perangkat lunak lama (tanpa VS13).

Saya sudah mencoba untuk membersihkan cache, menghapus file suo, menghapus direktori bin dan obj, membersihkan dan membangun kembali solusi, dll. Tetapi tidak ada yang berhasil.

Adakah yang bisa menjelaskan perilaku itu kepada saya?

Abu
sumber
2
Parser yang digunakan oleh intellisense tidak sama dengan compiler yang digunakan untuk mengompilasi kode sebenarnya.
dinginkan
1
Ini terjadi pada VS 2013 juga. Bisa jadi VS belum selesai mengindeks seluruh basis kode. Jika terkompilasi dan berfungsi seperti yang diharapkan, saya tidak akan memperhatikannya.
Kode Berbeda
2
@chill Di VS2015 itu harus menjadi parser yang sama, bagian dari Roslyn.
Lasse V. Karlsen
1
Bisakah Anda membuat proyek kecil yang mereproduksi masalah? Jika ya, dapatkah Anda memposting kode?
Lasse V. Karlsen
Apakah kelas tersebut parsial, atau ada bagian darinya yang dihasilkan pada waktu kompilasi?
Panagiotis Kanavos

Jawaban:

58

Juga memiliki masalah ini dengan proyek yang dimigrasi, jadi saya mereferensikan Microsoft.CSharp dll. Dalam beberapa proyek saya perlu menghapus dan menambahkan lagi Referensi dalam proyek tersebut.

Guilherme de Jesus Santos
sumber
3
Saya harus melakukan ini ketika anggota tim menambahkan proyek baru ke solusi dan memindahkan beberapa file cs dari proyek yang ada ke yang baru. Ketika saya mendapatkan yang terbaru, saya melihat banyak kesalahan tetapi saya dapat mengkompilasi dan menjalankannya. Menjatuhkan dan menambahkan kembali referensi ke proyek baru dari proyek yang tersinggung berhasil untuk saya.
Tagihan
1
Situasi yang persis sama yang dijelaskan Bill terjadi pada kami. Beberapa kelas dipindahkan ke proyek baru. Sepertinya Visual Studio tidak memperbarui cache Intellisense ketika referensi proyek baru diimpor dari kontrol sumber. Memasukkan kembali referensi secara manual memaksa VS untuk melakukannya.
Peter Macej
2
Solusi mengkompilasi, tetapi menunjukkan kesalahan berlekuk-lekuk di beberapa file. Tidak ada kesalahan yang ditunjukkan dalam "Rilis", hanya di Debug. Microsoft.CSharp dihapus, dan kesalahan hilang, terima kasih!
Michael
@Michael Terima kasih atas tip itu. Saya memiliki masalah yang persis sama. Tidak ada kesalahan dalam Rilis tetapi banyak kesalahan dalam Debug.
pengguna2061057
Jika kelas yang disebutkan adalah kode Anda sendiri, Anda dapat mengecualikan lalu menyertakan file yang berisi kelas tersebut. Ini harus memicu VS untuk memperbarui IntelliSense. #awfulbug
David S.
198

Saya mengalami ribuan kesalahan intellisense dan 0 kesalahan pembuatan. Setelah menghapus .suofile dan memulai ulang kesalahan VS intellisense hilang.

Suo file terletak relatif ke sumber di: .vs\SolutionName\v14\.suo

Menurut komentar: Hati-hati itu *.suoadalah file tersembunyi.

Edit: Menurut komentar, VS2017 memiliki masalah yang sama, jadi Anda dapat menggunakan solusi serupa: Hapus.vs\SolutionName\v15\.suo

Karel Kral
sumber
7
Sekadar catatan: *.suofile mungkin tersembunyi dalam beberapa kasus. Jadi, Anda perlu mengaktifkan View Hidden filesopsi dari windows explorer.
Athafoud
6
Membunuh .suo tidak berpengaruh bagi saya, tetapi menghapus bin dan obj dir dan kemudian membangun kembali solusi melakukannya.
Holger Böhnke
Menghapus file .suo tidak memecahkan masalah bagi saya (di VS2015) Saya mendapatkan warna merah palsu berlekuk-lekuk di javascript yang mereferensikan properti dari kode-di belakang: <%=Foo%>mengatakan variabel tidak dideklarasikan, tetapi semuanya berfungsi saat runtime.
Tim
Saya tidak 100% yakin, tetapi ini juga bisa memperbaiki kesalahan markup tidak valid yang saya dapatkan dengan XAML
Geordie
Temukan . -nama "* suo" -exec rm -rf {} \;
Derek Greer
20

Mengalami masalah serupa di Visual Studio 2017 ASP.Net Core Project. Langkah-langkah berikut berhasil bagi saya

  1. Lakukan Solusi Bersih
  2. Tutup VS
  3. Hapus file .suo & Hapus direktori bin / obj
  4. Buka kembali VS
Naren
sumber
1
Ini bekerja, tetapi hal yang membosankan untuk dilakukan dari waktu ke waktu. Saya selalu mengalami masalah ini saat membangun dalam mode rilis. Strange VS tidak bisa mengetahuinya dengan sendirinya.
nawfal
12

Masalah serupa dengan yang lain, tetapi resolusi berbeda. Memposting jika saya dapat membantu orang lain.

Menjalankan Visual Studio 2017 15.5.2. Saya menggunakan Git dan sering berpindah cabang. Beberapa minggu yang lalu, saya mulai meminta editor untuk menunjukkan kesalahan kepada saya (semua terkait dengan jenis yang tidak dapat ditemukan meskipun referensinya valid). Kompilasi bekerja dengan baik. Saya mengonfirmasi masalah yang sama di VS 2017 15.6 Preview (6 Jan 2018). Saya akan mencoba menghapus cache, file SUO, atau folder bin / obj dan tidak ada dampaknya. Pada awalnya itu akan tampak berhasil. Buka kembali Visual Studio dan semuanya akan terlihat bagus. Gunakan "Rebuild Solution" dan kesalahan IntelliSense akan muncul kembali. Saya bahkan mencoba membongkar / menginstal ulang Visual Studio.

Saya memiliki masalah yang sama pada dua mesin, keduanya dengan versi Visual Studio yang sama.

Dengan melihat kesalahan tentang tipe yang hilang, semuanya tampak berasal dari dua proyek yang direferensikan. Salah satu referensi tersebut adalah proyek bersama yang digunakan oleh hampir semua proyek lain dalam solusi, tetapi salah satunya adalah proyek kecil tanpa banyak referensi. Kebetulan proyek kecil itu juga direferensikan oleh proyek bersama saya yang lebih besar. Dalam Visual Studio, saya membongkar proyek kecil dan memuatnya kembali. Kesalahannya hilang! Kesalahan mereka tidak muncul kembali pada Rebuild Solution.

Saya kemudian mengganti cabang Git dan semua kesalahan kembali. Untungnya saya mengulangi langkah-langkah di atas untuk membongkar / memuat ulang proyek kecil dan kesalahannya hilang.

Setiap kali saya mengganti cabang Git, kesalahan muncul kembali sampai saya mengulangi proses itu. Tidak ada perubahan antara cabang Git untuk proyek kecil yang saya bongkar / muat ulang. Tidak jelas mengapa urutan tersebut memperbaiki masalah saya.

HgCoder
sumber
Berdasarkan ini, saya membongkar tiga proyek terkait "Tes" atau "Arsitektur", lalu membongkar dan memuat ulang proyek berisi kesalahan Intellisense (WPF). 0 dari 0 kesalahan :) +1 untuk detail diskrit yang membuat saya mencoba sesuatu yang mirip dengan Anda HgCoder!
Steven_BDawg
Menggunakan VS 2017 15.9.9. Menggunakan Git. Menggunakan R #. Saya juga sering berpindah cabang. Kesalahan saya memang semuanya IntelliSense. Saya melihat pembongkaran proyek menyebabkan kolom "Proyek" (di tab Daftar Kesalahan) pergi ke <Tidak Diketahui>. Jadi, sepertinya itu sedikit menendang. Proyek bongkar muat tampaknya berhasil untuk saya juga. Solusi Bersih + Solusi Rebuild akhirnya menghasilkan 0 kesalahan.
dthal
7

Juga punya masalah ini (judul, bukan pesan kesalahan spesifik), serta garis berlekuk-lekuk di editor. Garis berlekuk-lekuk pertama berada di bawah garis pertama#include pernyataan , yang menamai header yang telah dikompilasi sebelumnya. Intellisense gagal menyertakan header yang telah dikompilasi, tetapi tidak mencantumkannya sebagai kesalahan; sebagai gantinya ia mencantumkan kesalahan lebih jauh ke bawah file, pada kode yang (sangat berhak) bergantung pada deklarasi di header yang telah dikompilasi sebelumnya.

Alasan Intellisense tidak menemukan tajuk yang telah dikompilasi di lingkungan saya adalah karena tajuk bernama bukan file sebenarnya. Itu tidak harus dalam versi VC atau gcc lain yang saya gunakan, atau dalam kompiler 2015, selama pengaturan header yang telah dikompilasi telah dikonfigurasi dengan benar. Ternyata tidak lagi untuk Intellisense. Saya tidak sepenuhnya yakin itu berbeda pada tahun 2013, mungkin saya tidak pernah menyadarinya.

Dalam kasus yang tidak biasa bahwa ini akan menjadi masalah yang dilaporkan di sini, solusinya sederhana: buat file kecil dengan nama-pura-pura dari tajuk yang telah dikompilasi, seperti yang ditentukan di #include arahan, dan biarkan file itu menyertakan nama sebenarnya dari header yang telah dikompilasi sebelumnya.

Jika Anda bertanya-tanya ... mengapa ada perbedaan antara nama header yang telah dikompilasi sebelumnya dalam pernyataan '#include' dan nama file sebenarnya dari header yang telah dikompilasi sebelumnya? Justru karena itu menjamin bahwa pengaturan header yang dikompilasi telah dikonfigurasi dengan benar. Di mana pun tajuk yang dikompilasi sebelumnya adalah "#included", tidak ada file di sekitarnya yang dapat disertakan. Entah versi header sebenarnya yang telah dikompilasi sebelumnya (biner) dibaca, atau kompilasi gagal. Jelas, kerugiannya adalah membingungkan orang membaca kode, bukan hanya Intellisense.

Gelas bir
sumber
2

Visual Studio 2017 Saya telah menghapus file ".suo" dari lokasi .vs \ SolutionName \ v15.suo Dan kemudian me-restart Visual studio. Ini berhasil untuk saya.

Saurabh Raoot
sumber
2

Hari ini saya memiliki masalah yang sama dengan MSVC ++ 2015. Saya hampir menyerah dan memutuskan untuk melanjutkan tanpa petunjuk IDE, tetapi tiba-tiba saya menyadari bahwa stdafx.h dari proyek yang saya hadapi tidak mengandung header perpustakaan standar. Saya telah berspekulasi bahwa penyertaan semua header standar yang digunakan dalam proyek di stdafx.h dapat meningkatkan kecepatan kompilasi, namun melakukan hal itu memperbaiki kesalahan Intellisense juga.

Ancaman kecil
sumber
1

Saya memiliki beberapa stdfax.hdi Direktori Sertakan Tambahan. Pastikan yang stdafx.hAnda inginkan adalah yang pertama di jalan Anda.


sumber
1

Saya mengalami masalah serupa dengan versi Visual Studio yang berbeda.

Menghapus folder .suo atau .vs tidak membantu saya.

Solusi bagi saya adalah, saya mengaktifkan Extension StopOnFirstBuildError. Setelah mematikan "Hentikan build di atas kesalahan pertama" di menu build, dan setelah solusi sepenuhnya dibuat, kesalahan yang ditunjukkan oleh Intellisense hilang.

Fabian
sumber
1

Saya melihat kesalahan intellisearch hanya saat menerbitkan situs web. (Situs ASP / C #, VS 2017). Mereka melanggar publikasi. Situs berjalan dengan baik secara lokal.

Menghapus kesalahan dengan menghapus centang pada pengaturan untuk dikompilasi sebelumnya, dan itu diterbitkan dengan baik. Publish -> Setting -> File Publish Options -> Precompile selama penerbitan

Rahn
sumber
1

Dalam Visual Studio 2019 masalahnya adalah dengan mengubah cabang dengan Git ketika ada paket NuGet yang diinstal di proyek. Apa yang saya lakukan untuk menyelesaikan ini:

  1. Solusi Bersih
  2. Tutup Visual Studio
  3. Hapus folder paket
  4. Buka Visual Studio
  5. Buka Manajer Paket
  6. Pulihkan semua paket
  7. Kompilasi ulang
  8. Jika roslyn hilang, tutup dan buka Visual Studio, lalu kompilasi ulang.
Daniel Lobo
sumber