Visual Studio 2015 veya 2017 IntelliSense hatalarını gösteriyor ancak çözüm derleniyor


122

Şu anda yeni Visual Studio 2015'i değerlendiriyoruz ve IntelliSense ile ilgili garip bir sorunla karşılaştık. Yeni stüdyo ile ana çözümümüzü derlediğimde, yapı başarılı oldu, ancak yine de 6 hata gösteriliyor.

Bunun gerçek bir hata olmadığını, sadece bir zeka hatası olduğunu keşfettim. Kod kesinlikle doğrudur ve her şey başarıyla derlenmiştir. Ancak kod kırmızıyla işaretlenmiştir ve hatalar hata listesinde gösterilir.

6 hatanın tümü aynı kökene sahiptir. Bu basit bir yapıcı çağrısı. Yeterince garip, ancak aynı kurucunun hatasız bazı oluşumları da var.

Hata mesajı:

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>

Yeni stüdyo, herhangi bir eski yazılım olmadan (VS13 yok) yeni yüklenmiş bir Windows 7 üzerine kuruldu.

Zaten önbellekleri temizlemeyi denedim, suo dosyasını sildim, bin ve obj dizinlerini sildim, çözümü temizledim ve yeniden oluşturdum vs. Ama hiçbir şey işe yaramadı.

Biri bana bu davranışı açıklayabilir mi?


2
Intellisense tarafından kullanılan ayrıştırıcı, kodu derlemek için kullanılan derleyici ile aynı değildir.
Chill

1
Bu, VS 2013'te de olur. VS, henüz tüm kod tabanını indekslemeyi bitirmemiş olabilir. Beklendiği gibi derler ve çalışırsa, ona hiç dikkat etmeyeceğim.
Kod Farklı

2
@chill VS2015'te, Roslyn'in bir parçası olan aynı ayrıştırıcı olmalıdır.
Lasse V. Karlsen

1
Sorunu yeniden üreten küçük bir proje yaratabilir misiniz? Öyleyse, kodu gönderebilir misiniz?
Lasse V. Karlsen

Sınıf kısmi mi yoksa herhangi bir parçası derleme zamanında mı üretildi?
Panagiotis Kanavos

Yanıtlar:


58

Ayrıca taşınan bir projede bu sorunu yaşadım, bu yüzden Microsoft.CSharp dll'ye başvurdum. Bazı projelerde Referansı kaldırıp tekrar projeye eklemem gerekiyordu.


3
Bir ekip üyesi çözüme yeni bir proje eklediğinde ve bazı cs dosyalarını mevcut bir projeden yenisine taşıdığında bunu yapmak zorunda kaldım. En son aldığımda birçok hata gördüm ama derleyip çalıştırabiliyordum. Kırgın projeden yeni projeye referansı düşürmek ve yeniden eklemek benim için çalıştı.
Bill

1
Bill'in anlattığı durumun aynısı başımıza geldi. Bazı sınıflar yeni bir projeye taşındı. Görünüşe göre Visual Studio, kaynak denetiminden yeni proje referansı içe aktarıldığında Intellisense önbelleğini güncellememiş. Referansın yeniden girilmesi VS'yi bunu yapmaya zorladı.
Peter Macej

2
Çözüm derler, ancak bazı dosyalarda dalgalı hatalar gösterir. "Yayın" bölümünde gösterilen hata yok, sadece Hata Ayıklama'da. Microsoft.CSharp kaldırıldı ve hatalar gitti, teşekkürler!
Michael

@Michael Bu ipucu için teşekkürler. Bende de tamamen aynı sorun var. Sürümde hata yok ama Hata Ayıklamada çok fazla hata var.
user2061057

Bahsedilen sınıf kendi kodunuzsa, sadece hariç tutabilir ve ardından sınıfı içeren dosyayı dahil edebilirsiniz. IntelliSense'i güncellemek için VS'yi tetiklemelidir. #awfulbug
David S.

198

Binlerce intellisense hatası ve 0 yapı hatası aldım. Dosyayı sildikten .suove VS intellisense'i yeniden başlattıktan sonra hatalar giderildi.

Suo dosya kaynağa göreceli olarak şurada bulunur: .vs\SolutionName\v14\.suo

Yoruma göre: Bunun *.suogizli bir dosya olduğuna dikkat edin .

Düzenleme: Yorumlara göre VS2017'de aynı sorun var, bu nedenle benzer bir çözüm kullanabilirsiniz: Sil.vs\SolutionName\v15\.suo


7
Sadece bir not: *.suoBazı durumlarda dosyalar gizli olabilir. Bu nedenle, View Hidden filesseçeneği Windows gezgininden etkinleştirmeniz gerekir .
Athafoud

6
.Suo'yu öldürmenin benim için bir etkisi olmadı, ancak bin ve obj dizinini silmek ve ardından çözümü yeniden oluşturmak bunu yaptı.
Holger Böhnke

.Suo dosyasını silmek sorunu benim için çözmedi (VS2015'te) Javascript'te arka planda özelliklere referans veren düzensiz kırmızı dalgalı bir şekilde alıyorum: <%=Foo%>değişkenin bildirilmediğini, ancak her şeyin çalışma zamanında çalıştığını söylüyorum.
Tim

% 100 emin değilim, ancak bu aynı zamanda XAML ile aldığım geçersiz işaretleme hatalarını da düzeltebilirdi
Geordie

bul. -name "* suo" -exec rm -rf {} \;
Derek Greer

20

Visual Studio 2017 ASP.Net Core Project'te benzer bir sorunla karşılaştı. Aşağıdaki adımlar benim için hile yaptı

  1. Temiz Çözüm Uygulayın
  2. VS'yi kapat
  3. .Suo dosyasını silin ve bin / obj dizinlerini silin
  4. VS'yi yeniden aç

1
Bu işe yarıyor ama zaman zaman yapılması çok sıkıcı bir şey. Yayın modunda oluştururken her zaman bu sorunu yaşıyorum. Garip VS bunu kendi başına çözemez.
nawfal

12

Diğerleriyle benzer sorun, ancak farklı çözünürlük. Başkasına yardım edebilirsem diye gönderiyorum.

Visual Studio 2017'yi Çalıştırma 15.5.2. Git kullanıyorum ve sık sık dalları değiştiriyorum. Birkaç hafta önce, editörlerin bana hatalar göstermesine başladım (referanslar geçerli olmasına rağmen bulamadığı türlerle ilgili). Derleme harika çalıştı. Aynı sorunu VS 2017 15.6 Önizleme'de de doğruladım (6 Ocak 2018). Önbelleği, SUO dosyalarını veya bin / obj klasörlerini silmeye çalışırdım ve hiçbir etkisi olmaz. İlk başta işe yarıyor gibi görünüyordu. Visual Studio'yu yeniden açın ve her şey iyi görünecektir. "Rebuild Solution" kullanın ve IntelliSense hataları geri dönecektir. Visual Studio'yu kaldırmayı / yeniden yüklemeyi bile denedim.

Her ikisi de Visual Studio'nun aynı sürümüne sahip iki makinede aynı sorunu yaşadım.

Eksik türlerle ilgili hatalara bakıldığında, hepsinin referans alınan iki projeden geldiği görüldü. Bu referanslardan biri, çözümdeki hemen hemen her proje tarafından kullanılan paylaşılan bir projeydi, ancak bunlardan biri çok fazla referansı olmayan küçük bir projeydi. Küçük proje, benim daha büyük paylaşılan projem tarafından da referans olarak gösterildi. Visual Studio'da küçük projeyi kaldırdım ve yeniden yükledim. Hatalar gitti! Rebuild Solution'da hatalar geri gelmedi.

Daha sonra Git dallarını değiştirdim ve tüm hatalar geri geldi. Neyse ki yukarıdaki küçük projeyi boşaltma / yeniden yükleme adımlarını tekrarladım ve hatalar ortadan kalktı.

Git dallarını her değiştirdiğimde, bu işlemi tekrarlayana kadar hatalar geri geliyor. Kaldırdığım / yeniden yüklediğim daha küçük proje için Git dalları arasında sıfır değişiklik var. Bu dizinin neden sorunumu çözdüğü belli değil.


Buna dayanarak, "Test" veya "Mimari" ile ilgili üç projeyi kaldırdım, ardından Intellisense hata dolu projesini (WPF) kaldırdım ve yeniden yükledim. 0 of 0 hata :) Size benzer bir şey denememe neden olan farklı ayrıntılar için +1 HgCoder!
Steven_BDawg

VS 2017'yi kullanma 15.9.9. Git kullanarak. R # kullanarak. Ben de düzenli olarak şubeleri değiştiriyorum. Benim hatalarım aslında tamamen IntelliSense. Projenin kaldırılmasının "Proje" sütununun (Hata Listesi sekmesindeki) <Bilinmeyen> bölümüne gitmesine neden olduğunu fark ettim. Yani, biraz tekmeliyor gibi görünüyor. Boşaltma projeleri benim için de işe yaradı gibi görünüyor. Temiz Çözüm + Yeniden Oluşturma Çözümü sonunda 0 hata verdi.
dthal

7

Ayrıca bu problem (belirli bir hata mesajı değil başlık) ve düzenleyicide dalgalı çizgiler vardı. İlk dalgalı çizgi, #includeönceden derlenmiş bir başlığı adlandıran ilk ifadenin altındadır . Intellisense, önceden derlenmiş üstbilgiyi dahil edemez, ancak bunu bir hata olarak listelemez; bunun yerine, (çok haklı olarak) önceden derlenmiş başlıktaki bildirimlere dayanan koda dayalı olarak dosyanın aşağısındaki hataları listeler.

Intellisense'in ortamımda önceden derlenmiş üstbilgiyi bulamamasının nedeni, adı verilen başlığın gerçek bir dosya olmamasıdır. Önceden derlenmiş başlık ayarları doğru şekilde yapılandırıldığı sürece, kullandığım başka herhangi bir VC veya gcc sürümünde veya 2015 derleyicisinde olması gerekmiyor. Görünüşe göre Intellisense için artık değil. 2013'te farklı olduğundan tam olarak emin değilim, belki de hiç fark etmemiştim.

Beklenmedik bir durumda burada bildirilen sorunun bu olması durumunda çözüm basittir: #includeyönergelerde belirtildiği gibi önceden derlenmiş başlığın pretend-adıyla küçük bir dosya oluşturun ve bu dosyanın önceden derlenmiş başlığın gerçek adını içermesine izin verin.

Merak ediyorsanız ... '#include' ifadesindeki önceden derlenmiş başlık adı ile önceden derlenmiş başlığın gerçek dosya adı arasındaki bu ayrımın nedenini merak ediyorsanız? Tam olarak, çünkü önceden derlenmiş başlık ayarlarının doğru şekilde yapılandırılmasını garanti eder. Önceden derlenmiş bir başlığın "#included" olduğu her yerde, dahil edilebilecek hiçbir dosya yoktur. Ya gerçek başlığın önceden derlenmiş (ikili) bir sürümü okunur ya da derleme başarısız olur. Açıkçası, bir dezavantaj, yalnızca Intellisense'i değil, kodu okuyan insanların da kafasını karıştırmasıdır .


2

Visual Studio 2017 .vs \ SolutionName \ v15.suo konumundan ".suo" dosyasını sildim ve ardından Visual Studio'yu yeniden başlattım. Bu benim için çalıştı.


2

Bugün MSVC ++ 2015 ile benzer bir sorun yaşadım. Neredeyse pes ettim ve IDE ipuçları olmadan devam etmeye karar verdim, ancak birdenbire, sorun yaşadığım projenin stdafx.h dosyasının herhangi bir standart kitaplık başlığı içermediğini fark ettim. Projede stdafx.h dosyasında kullanılan tüm standart başlıkların dahil edilmesinin derleme hızını artırabileceğini, ancak bunu yapmak Intellisense hatalarını da düzelttiğini tahmin ettim.


1

stdfax.hEk İçerme Dizinlerinde birden çok dizim vardı . stdafx.hHedeflediğiniz şeyin yolunuzda ilk sırada olduğundan emin olun .


1

Farklı Visual Studio sürümleriyle benzer bir sorun yaşadım.

.Suo veya .vs klasörünü silmek bana yardımcı olmadı.

Benim için Çözüm, Uzantı StopOnFirstBuildError'ın etkin olmasıydı. Derleme menüsünde "İlk hatada derlemeyi durdur" u kapattıktan sonra ve çözüm tam olarak oluşturulduktan sonra, Intellisense tarafından gösterilen hatalar kayboldu.


1

Intellisearch hatalarını yalnızca bir web sitesi yayınlarken görüyordum. (ASP / C # sitesi, VS 2017). Yayını bozdular. Site yerel olarak iyi çalışıyordu.

Ön derleme ayarının işaretini kaldırarak hataları temizledi ve iyi yayınladı. Yayınla -> Ayar -> Dosya Yayınlama Seçenekleri -> Yayınlama sırasında ön derleme


1

Visual Studio 2019'da sorun, projede NuGet paketleri yüklü olduğunda Git ile dalların değiştirilmesidir. Bunu çözmek için ne yaptım:

  1. Temiz Çözüm
  2. Visual Studio'yu kapatın
  3. Paketler klasörünü silin
  4. Visual Studio'yu açın
  5. Paket Yöneticisine git
  6. Tüm paketleri geri yükle
  7. recompile
  8. Roslyn eksikse, Visual Studio'yu kapatıp açın, ardından yeniden derleyin.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.