Visual Studio'daki "Tanıma Git" yalnızca Meta Verileri getirir


132

Visual Studio 2008'de bir Web Projesinde çalışıyorum. F12'ye bastığımda (veya sağ tıklayıp Tanıma Git'i seçtiğimde) Visual Studio, kaynağa gitmek yerine sürekli olarak Metadata dosyasına gidiyor.

Bazı noktalar:

  • Tüm kaynak kodu C #, VB.Net yok
  • Tüm projeler aynı çözümde
  • Dosya referansının aksine her şey bir proje referansıdır (kontrol edilir ve iki kez kontrol edilir)
  • Clean / Rebuild Solution yaklaşımını denedim (Temp dizinini, Temporary ASP.NET Files dizinini vb. Temizleme noktasına kadar).

Bu davranışı gören ve / veya nasıl düzeltileceğini bilen başka biri var mı?


Bu sorunu yalnızca vb.net ve c # ile karışık çözümlerde farklı başvurulan projelerde yaşadım. Tuhaf: /
Bayard Randel

Tek çözüm şu
adrestedir

Benim için Visual Studio'nun yeniden başlatılması bu sorunu çözdü (çoklu proje çözümü içindeki bir .net Core projesinde).
niico

Yanıtlar:


59

Cevabı başka bir geliştirici buldu. Sorun yaşadığımız belirli proje başlangıçta bir dosya referansı olarak eklendi, ardından kaldırıldı ve Proje Referansı olarak eklendi. Ancak Visual Studio, soruna neden olan web sitesinin csproj dosyasında her ikisini de tuttu. Sorunlu projeye dosya referansını kaldırmak için csproj dosyasını el ile düzenledi ve şimdi hepsi düzeltildi


Bu, sahip olmak için harika bir bilgi. SP1'in yüklü olup olmadığını merak ediyorum.
NotMe

Peki, bu bilgiyi internette herhangi bir yerde bulabilirsem size söylerdim. VS 2008 9.0.21022.8 RTM çalıştırıyorum, ancak herhangi bir yerde VS 2008 SP1 veya orijinal
pfunk

Harika, teşekkürler - bu bana yardımcı oluyor. Text / xml editörü kullanarak açılıyorsa csproj dosyasında ProjectReference olmalıdır. Diğerleri kaldırılmalıdır.
Victor Gelmutdinov 01

3
Bu, ProjectReference'daki GUID, referans verilen projedeki ProjectGuid değeriyle eşleşmezse de gerçekleşebilir
David Gardiner

Teşekkürler! Bu tür sorunlar MSVS'de hala devam ediyor
Alex

42

Proje olarak referans eklemediğinizde ancak Referans Ekle iletişim kutusundaki Gözat sekmesini kullanarak bir dll veya exe'yi işaret ettiğinizde gerçekleşir. Projeler sekmesini kullanarak referans eklerseniz Tanıma Git'i seçtiğinizde doğrudan kaynak koduna gitmelisiniz.

Ancak, ReSharper'ı kurarsanız , Gözat sekmesini kullanarak bir dll / exe referansınızı ekleseniz bile kaynak koda gideceksiniz.


39

Görünüşe göre Resharper'da da kurulması gerekiyor. Resharper'da etkinleştirene kadar Visual Studio'm .NET Framework kaynak koduna gitmiyor.

Harici kaynağa gitmeye izin vermek için yeniden paylaşım ayarları


1
Merhaba benim için çalışıyor. Bu sorunu çözdü. VS2015 Güncelleme 3'ü kullanarak, ReSharper 2016.1.2
Michal

25

1. çözümünüzü kapatın.

2.<name of the solution> Çözümünüzün <name of the solution>.sln dosyasının bulunduğu klasördeki gizli .suo dosyasını silin .

3. Çözümünüzü açın.

4. çözümünüzü yeniden oluşturun.


7
Bu benim için çalışan seçenekti. Ancak, VS2019 RC (16.0.0) kullanıyorum ve .sou dosyasını .vs \ {ProjectName} \ v16
Nick DeVore

1
Benim için de temizledim. VS2017 kullanıldığında, .sou dosyaları birden çok konumdaydı - ".vs \ <ProjeAdı> \ v15", Nick'in kaydettiği gibi, VS2019 .sou dosyasının V16 alt dizininde olduğu gibi. Ayrıca 2017'ye yükseltmeden önce aynı Çözümde kullandığım daha önceki bir VS2015'ten bir "... V14" alt dizinim olduğunu da unutmayın. Her ikisini de temizledim ve tüm sorunlar ortadan kalktı.
BRebey

1
* .suo değil .sou gerçek dosya uzantısıdır
Mike Cheel

1
Visual Studio 2019'da da aynı. Çözümü kapatın, çözümü dosya gezginde açın, .suo dosyalarını arayın ve hepsini silin. Çözümü yeniden açın ve tekrar çalışır.
yesman

Bu Seçenek benim için çalıştı, teşekkür ederim. VS2019 için vs klasörünü silin ve projeyi açın
Ashi

21

VS 2017 kullananlar için (şu anda 15.3.4 sürümündeyim) işte basit adımlar:

  1. Çözümünüzü Windows Gezgini'nde açın ve Visual Studio'yu kapatın
  2. Gezgin menüsünde Görünüm'ü seçin ve "Gizli öğeler" onay kutusunun işaretlendiğinden emin olun
  3. Alt klasöre gidin .vs\[your solution name]\v15
  4. .suoDosyayı silin
  5. VS'yi yeniden başlatın ve çözümünüzü oluşturun

Bu benim için sorunu çözdü: F12, "meta verilerden" sürümünü değil gerçek kaynak dosyasını açtı.


Başka yerdeki yorumlarda belirtildiği gibi, VS2019 çalıştırıyorsanız dizin v16'dır.
Otis

10

Görsel stüdyo genellikle projenizi oluşturduğunuz yeri değiştirirseniz, projeniz yerine meta verilere gitme sorunundan muzdariptir, yani, bir şeyleri test etmek için birkaç sürümünüz olabilir.

Sadece referansı silin ve hemen geri ekleyin; her şey hallolur.


8

İşaretli çözüm her zaman işe yaramıyor. Proje dosyalarında başvurulan proje GUID'sinin başvurmaya çalıştığınız proje için doğru GUID olduğundan emin olmalısınız. Visual Studio, bazı durumlarda senkronizasyondan çıkmalarına izin verir. Proje GUID'sini bir metin düzenleyiciyle proje dosyasından alabilirsiniz. Dolayısıyla, A projesi referans projesi B ise, B.csproj projesini metin düzenleyicide açın, etiketten proje GUID'sini kopyalayın. Ardından metin düzenleyicide A.csproj projesini açın ve doğru GUID'yi kullandığınızdan emin olun. Bu durumda "B" proje adını arayın. Olmalıdır. Etiketteki GUID'yi doğru olanla değiştirin. Kaydedin ve yeniden yükleyin. Elbette projelerinize dosya tabanlı referansların da kaldırıldığından emin olun. Sadece proje referansları istiyorsunuz.


6

Tüm VS örneklerini öldürdüm, SUO'yu sildim, sln'yi başlattım ve benim için çalıştı ...


Beklenmedik bir msbuild çökmesi yaşadım ve daha sonra bu da dahil olmak üzere çeşitli sorunlar ortaya çıktı. Bu sorunu çözdü. Tuhaf.
Chris Lukic

3

Referans dll'yi kaldırın, Derleyin (hatalar alacak), Referansı EKLEYİN (kaldırdınız) sonra tekrar oluşturun ... Fonksiyonunuz üzerinde F12 çalışmalı (benim için çalıştı).


2

Benim sorunu çözmek için nasıl düşündüm bu görevinden , belki bazılarınız için de işe yarayacaktır.

Şu adımları takip ettim:

  1. Çözümü kapatın.
  2. Çözüm için intellisense veritabanı dosyasını silin: .ncb
  3. Çözümü açın.
  4. Çözümü yeniden oluşturun.

(Adım 3 veya 4'ün, eksik olduğunda intellisense veritabanı dosyasını yeniden oluşturduğuna inanıyorum)

Intellisense, "tanıma git" ve "tüm referansları bul" yeniden çalışıyor olmalı.


2

Benim durumumda (Visual Studio Professional 2015 kullanarak), XAML tasarımcısını devre dışı bıraktığımda, F12 çalışmayı durdurdu. Değişiklikleri geri alır almaz ve Visual Studio'yu yeniden başlatır koymaz F12 tekrar çalıştı.

Onaylamak için kalıbı birkaç kez kontrol etti ve sonra yayınladı. Umarım birine yardımcı olur.


1

Belirti:

Visual Studio 2010 Ultimate, "Tanıma Git" veya "Bildirime Git" veya "Tüm Referansları Bul" özelliklerini kullanırken işlevlere, # tanımlara, içeriğe vb. Referansları bulmada defalarca başarısız oluyordu - garip bir şekilde Intellisense çalışıyordu.

Düzeltme:

  1. Visual Studio'yu kapatın
  2. Çözüm .sdf dosyasını silin (muhafazakar olmak istiyorsanız yeniden adlandırın)
  3. Visual Studio'yu yeniden açın

Çözümünüzdeki içerme dosyaları ayrıştırılarak .sdf dosyası otomatik olarak yeniden oluşturulacaktır.


2
@alestanis Belki de bu cevap sorunu herkes için çözmedi.
nuzzolilo

@alestanis OP'de sorun bende var, ancak kabul edilen cevap bana yardımcı olmadı .... Belki de kabul edilmiş bir cevabı olan tüm soruları silmeliyiz?
Carl

1

Benim için GUID çözümü işe yaramadı ve .ncb dosyamı bulamadım. (Ya da belki tembelim ve yeterince sert görünmedim, ama bu önemli değil.) Görsel stüdyoyu yeniden inşa etmek ve yeniden başlatmak da yardımcı olmadı.

Yaptığım şey, görsel stüdyosunu kapatmak ve intellisense'imin bağlanmaya devam ettiği Meta Veri dosyasının üst kısmında başvurulan .dll ve .pdb'yi silmekti. Benim durumumda, .dll'mi ve .pdb dosyasını Utilities / bin / Release'den sildiğim anlamına geliyordu. (Yardımcı programlar, sorun yaşadığım .dll projesinin adıdır.) Sonra görsel stüdyoyu yeniden başlattım ve .dll'yi ve ardından tüm çözümü yeniden oluşturdum. Artık sorun yok!


1

Başka bir neden buldum. Web projemi 4.0'a yükselttim ancak sınıf kitaplıklarını 2.0'da bıraktım. Bu noktada, çözümümdeki tüm sınıf kitaplıkları web projemden dosya başvuruları olarak değerlendirildi. Başka birine yardım edebilir ...


1

Ben de aynı sorunla karşılaştım ve meslektaşlarından biri bana şu çözümü verdi ve işe yaradı! Yukarıdakilerden hiçbiri sizin için işe yaramazsa,

  1. Tüm referansları kaldırın ve tekrar ekleyin (yolun doğru olduğundan emin olun)
  2. Çözüm özelliklerine gidin ve tüm projelerin Proje Bağımlılıklarını yeniden kontrol edin. Kullanacağınız projenin, üzerinde çalıştığınız projeye bağımlı olarak eklendiğinden emin olun.

1

Önerilen tüm adımları uyguladım ama hiçbir şey değiştirilmedi, sonra
sonunda sağ tıklayıp referans menüsü, proje sekmesi ekle

  1. sadece referans projenin seçimini kaldırın.
  2. çözümü kaydedin.
  3. aynı projeyi seçin.
  4. Çözümü yeniden oluşturun.

Sorun çözüldü. Umarım bu birine yardımcı olur.


1

Aşağıdaki adımlar benim için çalıştı.

  1. .Csproj dosyasına gidin
  2. Not Defteri'nde açın dll'nin başvurulduğu satıra gidin.<Reference Include="">
  3. Satırı sil

    <SpecificVersion>False</SpecificVersion> 
    or 
    <SpecificVersion>True</SpecificVersion>
    

1

Dll dosyalarını önce Visual Studio'dan sildikten ve bunları Solution Explorer -> Website -> Add -> Reference'dan manuel olarak geri ekledikten ve IIS'de 32-bit Uygulamaları etkinleştirmek benim için düzeltildi.


1

1.

"Görünüm - Nesne Tarayıcısı" nı işaretleyin ve aynı ada sahip birden fazla montaj görüyorsanız - bu hatayı almanın nedeni budur.

Bizim için VS 2019'daki bir hataydı:

ASP.NET "Razor yardımcıları" varsa App_CodeKlasörde , Visual Studio 2019 bunu farklı bir derleme olarak yorumlar ancak aynı adla gerçek derlemeyi gizler.

Bu yardımcıları kısmi görünümlere veya HTML yardımcılarına yeniden yazmaktan başka bir düzeltme yoktur (.NET Core'a geçiş yapmayı planlıyorsanız yine de bunu yapmanız gerekecektir).

MS'in sitesinde bu geçici çözüme bakın ve lütfen hatayı oraya yükseltin, böylece MS sorunu giderir

https://developercommunity.visualstudio.com/solutions/1008795/view.html (lütfen yukarı oy verin)

2.

Aynı derlemenin nesne tarayıcısına iki kez yüklenebilmesinin bir başka nedeni de, iis-express sürecini başlatan ve onu asla düzgün bir şekilde öldürmeyen bir birim testi projesine sahip olmanızdır.


0
  1. VS'den web sitesi menüsüne tıklayın.
  2. Referans ekle...
  3. İletişim kutusundan proje sekmesine tıklayın
  4. DDL seçin
  5. Tamam düğmesine tıklayın

0

Benim durumumda, yakın zamanda değişmiştim

<mvcBuildViews>

sitemin .csproj dosyasında "true" olarak (Razor görünüm dosyalarımda derleme hatalarını bulmak için: http://forums.asp.net/t/1909113.aspx?How+to+have+Visual+Studio+2012+returned + derleme + hataları + üzerinde + jilet + sözdizimi + hatası + içinde + asp + net + web + sayfa 2 + ve daha sonra oluşturduğumda sitemin / obj / Debug / dizininde hatalar alıyordum. Bu dosyaların herhangi birinden (güncel olmayan), sağ tıklayıp "Tanıma Git" i seçmek bana [meta veri] sürümünü verecektir.

Yani benim için buradaki çözümlerin hiçbiri işe yaramadı çünkü aslında projemde olan bir dosyadan başlamıyordum. / Obj / Debug / dizininin tamamı silindi, hatalar ortadan kalktı ve herhangi bir normal dosyadan Tanıma Git'i doğru şekilde kullanabilirim.


0

VS 2013'te bu problemle karşılaştım. İzole edemediğim (yapamadığım) bir şey, CSPROJ dosyasındaki GUID'yi değiştirmekti. CSPROJ dosyaları SVN'de kontrol edildiğinden, yerel geliştiricimdeki GUID'yi değiştiremedim. Bunun yerine, her seferinde yerel değişikliği SVN sürekli olarak geri alıyordum.

İlk olarak, değişen GUID problemini çözmem gerekiyordu.

  1. CSPROJ'u kontrol edilen sürüme geri döndürün.
  2. CSPROJ'u VS DEĞİL bir metin düzenleyici aracılığıyla açın.
  3. El değmemiş CSPROJ dosyasından değeri ayıklayın.

    {B1234567-5123-4AAE-FE43-8465767788ED}

  4. SLN dosyasını VS DEĞİL, bir metin düzenleyici aracılığıyla açın.

  5. Çözümde Proje referansını bulun.

    Proje ("{FAE12345-3210-1357-B3EB-00CA4F396F7C}") = "Bazı.Proje", ".... \ assemblies \ Some.Project \ Some.Project.csproj", "{B7654321-5321-4AAE- FE3D-ED20900088ED} "EndProject

  6. Listelenen ilk GUID, Çözüm GUID'dir. SLN'nizde referans verilen her proje için, bu değerin ilk argümanda tekrarlandığını görmelisiniz. .Csproj'dan sonra gelen GUID, bozulmamış GUID ile değiştirmek istediğiniz GUID'dir.

Bu ilk sorunu çözmelidir, ancak meta verilerdeki "Tanıma Git" çıkışı çözülmemiştir. SLN dosyamızda bir ana proje (web sitemiz) vardır, bu nedenle SLN dosyasındaki girişi birden fazla GUID değeri olan bir ProjectSection girişi içermelidir. İşte bir örnek:

ProjectSection(ProjectDependencies) = postProject
{AC50D230-24C4-4DCA-BAAD-355E6AF5EFBD} = {AC50D230-24C4-4DCA-BAAD-355E6AF5EFBD}
EndProjectSection

Bu koleksiyondaki eksik GUID'in benim bozulmamış projemdeki GUID olduğuna dikkat edin.

  1. Eksik GUID'yi ProjectSection ile EndProjectSection arasındaki son giriş olarak ekleyin. Biçim, satır başına görünür ve {GUID} = {GUID} şeklindedir.
  2. Dosya 'yı kaydet.
  3. Çözümünüzü açın.
  4. Yeni eklenen projede bir referansı sağ tıklayın ve "Tanıma Git" i tıklayın.

0

İlgili iki proje arasında döngüsel bir referansım vardı (bu hayır-hayır). Her iki proje de gerçekten birbirine bağlı olduğundan, onu çözmek için kodumu biraz yeniden yapılandırmam gerekiyordu. Referanslardan birinin kaldırılması, intellisense problemini çözdü. Mantıksal olarak kusurluydu ve muhtemelen bu hata olmadan fark etmezdim!


0

Bu benim için çalıştı:

  1. Çözüm gezgininizdeki referans klasöründeki dll'ye sağ tıklayın
  2. Dll dosyasını kaldır
  3. Referans klasörüne sağ tıklayın, ardından
  4. Dll dosyasına tekrar referans ekleyin

0

Bu, kaldırılmış bir projede tanıma atlamaya çalışıyorsanız olabilir (Kullanılamıyor). Yüklenmemiş projeye sağ tıklayın ve "Projeyi Yeniden Yükle" yi seçin.


-1

En iyi tahmin, hata ayıklama bilgilerine sahip olmadığınızdır. Belki de derlemenizin birden çok kopyası diskte vardır ve içinde .pdb dosyası yoktur.

Projelerinizden montaj adlarınızı arayın ve hepsini silip yeniden oluşturun.

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.