it-swarm-tr.com

Meta veri dosyası '.dll' bulunamadı

WPF, C # 3.0 projesi üzerinde çalışıyorum ve bu hatayı alıyorum:

Error 1 Metadata file
'WORK=- \Tools\VersionManagementSystem\BusinessLogicLayer\bin\Debug
\BusinessLogicLayer.dll' could not be found C:\-=WORK=- \Tools
\VersionManagementSystem\VersionManagementSystem\CSC VersionManagementSystem

Kullanıcı kontrollerime bu şekilde atıfta bulunuyorum:

xmlns:vms="clr-namespace:VersionManagementSystem"
<vms:SignOffProjectListing Margin="5"/>

Her başarısız yapıdan sonra olur. Çözüm için derlemeyi elde etmenin tek yolu, tüm kullanıcı kontrollerimi yorumlamak ve projeyi yeniden inşa etmektir, ve sonra kullanıcı kontrollerini karıştırıyorum ve her şey yolunda.

Yapı siparişleri ve bağımlılık yapılandırmalarını kontrol ettim.

Gördüğünüz gibi, DLL dosyasının mutlak yolunu kesmiş gibi görünüyor ... Uzunluğunda bir hata olduğunu okudum. Bu olası bir problem mi?

Bu çok can sıkıcı ve yorum yapmak, inşa etmek ve rahatsız etmek, yapım son derece yorucu hale geliyor.

543
Oliver

Ben de aynı sorunu yaşadım. Visual Studio, başvurulan projeyi oluşturmuyor.

  1. Çözüme sağ tıklayın ve Properties (Özellikler) öğesine tıklayın.
  2. Soldaki konfigürasyona tıklayın.
  3. Bulamadığı proje için "Oluştur" altındaki onay kutusunun işaretlendiğinden emin olun. Önceden işaretlenmişse, işaretini kaldırın, uygula seçeneğine basın ve kutuları tekrar kontrol edin.
690
Matt_Bro

Bu yine de Visual Studio'nun daha yeni sürümlerinde olabilir (Visual Studio 2013'te daha önce gerçekleşti):

Denenecek başka bir şey de Visual Studio'yu kapatmak ve .suo dosyasının yanındaki .sln dosyasını silmek. (Bir dahaki sefere Save all (ya da Visual Studio'dan çık) yeniden üretilecektir).

Başka bir makinede çözüme yeni projeler eklerken ve düzeltmeleri içeri çekerken bu sorunu yaşadım, ancak .suo dosyası başka durumlarda da bozulabilir ve çok garip Visual Studio davranışlarına neden olabilir, bu nedenle silme her zaman denediğim şeyler. 

.suo dosyasını silmek, çözümün başlangıç ​​projelerini sıfırlayacaktır.

.suo dosyasındaki diğer bilgiler here .

189
corvuscorax

Önerilen cevap benim için işe yaramadı. Hata, başka bir problem için bir yemektir.

.NET'in biraz farklı bir sürümünü hedeflediğimi öğrendim ve bu derleyici tarafından bir uyarı olarak işaretlendi, ancak binanın başarısız olmasına neden oldu.

122
jordan koskei

Cevabım sadece tüm çözümlerin özeti değil, bundan daha fazlasını sunuyor.

Bölüm 1):

Genel çözümler:

Bu tür dört hatam vardı (‘meta veri dosyası bulunamadı ') ve Source Kaynak Dosya Açılamadı (‘ Belirtilmemiş hata ‘)’ hatasıyla bir hata yaptım.

"Meta veri dosyası bulunamadı" hatasını atmaya çalıştım. Bunun için birçok yazı, blog vb. Okudum ve bu çözümlerin etkili olabileceğini gördüm (bunları burada özetleyerek):

  1. Visual Studio'yu yeniden başlatın ve yeniden oluşturmayı deneyin.

  2. 'Solution Explorer' 'a gidin. Çözümü sağ tıklayın. Özellikler 'e gidin. 'Configuration Manager' 'a gidin. 'Build' altındaki onay kutularının işaretli olup olmadığını kontrol edin. Bunlardan herhangi biri veya tümü işaretlenmemişse, onları kontrol edin ve yeniden oluşturmayı deneyin.

  3. Yukarıdaki çözümler işe yaramazsa, o zaman yukarıdaki 2. adımda belirtilen sırayı takip edin ve tüm onay kutuları işaretlenmiş olsalar bile işaretini kaldırın, tekrar kontrol edin ve yeniden oluşturmayı deneyin.

  4. Sipariş Oluştur ve Proje Bağımlılıkları:

    'Solution Explorer' 'a gidin. Çözümü sağ tıklayın. 'Proje Bağımlılıkları ...' 'ya gidin. İki sekme göreceksiniz: 'Bağımlılıklar' ve 'Sipariş Oluştur'. Bu inşa emri, çözümün inşa edildiği emirdir. Proje bağımlılıklarını ve yapım sırasını kontrol edin, diğerine bağımlı olan bir projenin ('proje1' deyin) (proje2 'deyin) bundan önce (proje2) inşa etmeye çalıştığını doğrulayın. Bu hatanın nedeni olabilir.

  5. Eksik .dll dosyasının yolunu kontrol edin:

    Eksik .dll dosyasının yolunu kontrol edin. Yol boşluk veya başka bir geçersiz yol karakteri içeriyorsa, kaldırın ve yeniden oluşturmayı deneyin.

    Sebep buysa, yapım sırasını ayarlayın.


Bölüm 2):

Özel durumum:

Yukarıdaki tüm adımları çeşitli permütasyonlarla ve Visual Studio'yu birkaç kez yeniden başlatmanın kombinasyonları ile denedim. Ancak, bana yardımcı olmadı.

Bu yüzden, karşılaştığım diğer hatalardan kurtulmaya karar verdim ('Kaynak Dosya Açılamadı (‘Belirtilmemiş hata‘)').

Bir blog yazısına rastladım: TFS Hatası – Kaynak Dosya Açılamadı (‘Belirtilmemiş hata‘)

Bu blog yazısında belirtilen adımları denedim ve 'Kaynak Dosya Açılamadı (' Belirlenemeyen hata ')' hatasından kurtuldum ve şaşırtıcı bir şekilde diğer hatalardan kurtuldum ('meta veri dosyası bulunamadı) ').


Bölüm (3):

Hikayeden çıkarılacak ders:

Hatadan kurtulmak için yukarıdaki (1) bölümdeki (ve diğer tüm çözümlerde) belirtilen tüm çözümleri deneyin. Hiçbir şey işe yaramazsa, yukarıdaki bölüm (2) 'de belirtilen bloga göre, kaynak denetiminde artık bulunmayan tüm kaynak dosyalarının ve dosya sisteminizin .csproj dosyanızdan silin.

86
Vikram

Benim durumumda buna .NET Framework sürüm uyuşmazlığı neden oldu.

Bir proje 3.5, diğer referans proje 4.6.1.

33
Eric Schneider

Kapanma ve yeniden açma Visual Studio 2013 benim için çalıştı!

23
Roffers

Şey, önceki cevaplardaki hiçbir şey benim için işe yaramadı, bu yüzden geliştiriciler olarak burada neler olup bittiğini gerçekten anlamaya çalışmamız gerektiğinde neden tıkladığımı ve umduğumu düşünüyorum.

Bana göre bu hatalı meta veri dosyası referansının bir yerde yapılması gerektiği açıktı.

.Csproj dosyasının hızlı bir şekilde aranması suçlu satırları gösterdi. Eski yanlış filepath'a asılmış gibi görünen <itemGroup> adlı bir bölümüm vardı.

<ItemGroup>
    <ProjectReference Include="..\..\..\MySiteOld\MySite.Entities\MySite.Entities.csproj">
        <Project>{5b0a347e-cd9a-4746-a3b6-99d6d010a6c2}</Project>
        <Name>Beeyp.Entities</Name>
    </ProjectReference>
...

Yani gerçekten basit bir düzeltme:

  1. .Csproj dosyanızı yedekleyin.
  2. .Csproj dosyasındaki yanlış yolları bulun ve uygun şekilde yeniden adlandırın.

Lütfen kemandan önce eski .csproj dosyasını yedeklediğinizden emin olun .

16
Alex Stephens

Ben de bu problemle karşılaştım. Öncelikle, sizi DLL projesini elle inşa etmeniz gerekiyor, sağ tıklayarak, Build. O zaman işe yarayacak.

13
user1678541

Aynı hata "Metadata dosyası '.dll' bulunamadı" ve yukarıda açıklanan birkaç şeyi denedim, ancak hatanın nedeni, hedefleyen üçüncü taraf DLL dosyasına başvuruyor olmamdı Projenin hedefi .NET sürümünden daha yüksek. Böylece çözüm, projemin hedef çerçevesini değiştirmekti.

13
Mladen Nikolov

Çözümüme yeni bir proje ekledim ve almaya başladım. 

Sebep? Getirdiğim proje farklı bir .NET çerçevesini hedefliyordu (4.6 ve diğer ikisi 4.5.2). 

10
Todd Vance

Benim durumumda, yüklü dizini yanlış yollardan sahibim.

Çözüm yolunuz "Projem% 2c Çok Popüler% 2c Birim Testi% 2c Yazılım ve Donanım.Zip" gibi bir şeyse, meta veri dosyasını çözemez, belki% 2c gibi bazı geçersiz kelimeleri engellemeliyiz.

Yolu normal adla yeniden adlandırmak sorunumu çözdü.

10
masphei

Benim için çözüme yeni bir proje eklediğimde oldu.

Visual Studio, .NET Framework 4.5'i otomatik olarak seçer. 

Diğer kütüphanelerde olduğu gibi .NET 4.5.2 sürümüne geçtim ve çalıştı.

9
Andre Mesquita

Ben de bu sorunla saçlarımı çekiyordum, ancak önceki cevapları denedikten sonra benim için çalışan tek şey çözümümdeki her bir projeyi 1'e 1 açıp ayrı ayrı yapmaktı.

Sonra Visual Studio 2013'ü kapattım, çözümümü yeniden açtım ve iyi derlendi.

Garip, çünkü her projeyi Çözüm Gezgini'mde tıklarsam ve bunları bu şekilde oluşturmaya çalışırsam, hepsi başarısız oldu. Onları kendi çözümlerinde yalnız açmak zorunda kaldım.

8
prospector

Benim için aşağıdaki adımlar çalıştı: 

  • İnşa edilmeyen projeyi bul
  • Çözüm içindeki projelere referansları kaldırın/ekleyin.
8

Benim için, Projeyi içeren bir yolda DLL bulmaya çalışıyordu, ancak yeni bir dizine taşıdık. Çözüm, Projeye doğru yolu buldu, ancak Visual Studio bir şekilde eski yerini aramaya devam etti.

Çözüm: Her problemi yeniden adlandırın Project - sadece bir karakter veya her neyi ekleyin - sonra yeniden orijinal ismine yeniden adlandırın.

Bu, Visual Studio'da bir tür genel önbelleği sıfırlamalıdır, çünkü bu hem bu sorunu temizler hem de birkaçını temizler, ancak Clean gibi şeyler yapmaz.

8
Chris Moschini

Sorunun örneğime, içinde yinelenen bir sınıf adı olan (farklı bir dosya adı altında) ortak bir proje neden oldu. Visual Studio'nun bunu tespit edememesi ve bunun yerine derleme işlemini patlatması garip.

7
Eric

Bu sorunu Visual Studio 2012'de pek çok projesi olan bir çözümde gördüm. Çözümdeki her projeyi Proje Oluşturma Sırasıyla aynı sırada el ile yeniden oluşturma (sağ tıklayıp Solution Explorer'da yeniden oluşturma) benim için düzeltti.

Sonunda bana derleme hatası veren birine ulaştım. Hatayı düzelttim ve çözüm ondan sonra doğru şekilde derlendi.

7
dan-gph

Benim durumumda, sorun basit bir derleme hatasından kaynaklanıyordu,

hata CS0067: 'XYZ' olayı hiçbir zaman kullanılmıyor

bu, herhangi bir nedenle, hata penceresinde görünmedi.

Bu nedenle, Visual Studio derleme sistemi hatayı özlüyormuş gibi göründü ve sırayla can sıkıcı meta veri mesajıyla başarısız olan bağımlı projeler yapmaya çalıştı.

Öneri -kulabildiği kadar aptalca--:

Öncelikle Çıkış Penceresine !

Bu fikir bana çarpmadan önce yarım saatimi aldı ...

6
Heinz Kessler

Ben de aynı hatayı yaşadım. Aşağıdaki yoldaki gibi gizlenir .. __ DLL dosyası için bahsettiğim yol "D:\Assemblies Folder\Assembly1.dll" gibidir.

Ancak derlemenin yönlendirildiği özgün yol "D:\Assemblies% 20Folder\Assembly1.dll" idi.

Bu yol adı varyasyonu nedeniyle, Asıl yolundan derleme alınamadı ve bu nedenle "Meta veri bulunamadı" hatasını veriyor.

Çözüm Yığın Taşması sorusundaki C # içindeki tüm alanları% 20 ile nasıl değiştiririm?.

5
Arun Prasad

Ben de aynı problemle karşılaştım. Benim durumumda projemden daha yüksek .Net sürümü olan bir sınıf kütüphanesi projesine başvurdum ve VS projeyi inşa edemedi ve gönderdiğiniz hatayı yükseltti. 

Başvurulan projenin .Net sürümü ile aynı olan sınıf kütüphane projemin (yapıyı kırmış olan) .Net sürümünü ayarladım.

5
Code_Worm

Benim durumumdaki sorun, "eksik" olarak işaretlenmiş bir derleme dosyasını manuel olarak silmemdi. Bir kez ben şimdi eksik dosyaya başvuru silindi ve yeniden derlendi - her şey iyiydi.

5
David Ford

Birkaç yıl sonra buna geri dönersek, bu sorun Windows maksimum yol sınırlamasından daha olasıdır:

Dosyaların, Yolların ve Ad Alanlarının Adlandırılması, Maksimum Yol Uzunluğu Sınırlaması

5
Oliver

Visual Studio'nun bir hata hakkında doğru bilgi sağlamadığı gerçeğiyle ilgili bu tür hatalara benziyor. Geliştirici, başarısız yapının nedenini bile anlamıyor. Bir sözdizimi hatası veya başka bir şey olabilir. Genel olarak, bu tür problemleri çözmek için problemin kökünü bulmalısınız (örneğin, derleme günlüğüne bakınız).

Benim durumumda sorun aslında Error List penceresinin herhangi bir hata göstermemesiydi. Ama gerçekten sözdizimi hataları vardı; Bu hataları Output penceresinde buldum ve düzelttikten sonra sorun çözüldü.

5
burzhuy

Sahte montajlar kullanıyorsanız, bu hata gösterilebilir. Sahteleri kaldırmak, projenin başarılı bir şekilde kurulmasına yol açar.

4
FLCL

Visual Studio 2013'ü çalıştırıyorum.

Derleme bağımlılıklarının hatalı olduğu anlaşılıyor. * .Suo dosyalarını silmek, sahip olduğum sorunları çözdü.

4
DrBB

Benim durumum için, sınıfları belirli (boş) bir ad alanında yorumladım:

namespace X.Y.Z.W
{

    // Class code

}

Ad alanı kodunu ve bunun içe aktarma (kullanma) komutlarını kaldırdığımda sorun çözüldü.

Derlemede aynı zamanda - projenin eksik DLL dosyasıyla birlikte:

hata CS0234: 'W' türü veya ad alanı adı 'X.Y.Z' ad alanında mevcut değil (bir Assembly referansı eksik mi?)

4

Bir web uygulamasını yayınlamaya çalışırken bu hatayı aldım. Bir sınıf özelliklerinden birinin içine sarıldığı ortaya çıktı

#if DEBUG
    public int SomeProperty { get; set; }
#endif

ancak mülk kullanımı değildi. Yayınlama, Release konfigürasyonunda DEBUG sembolü olmadan yapıldı.

4
Dmitri Trofimov

Çözüm adınızda bir boşluk varsa, bu da soruna yol açacaktır. Boşluğu çözüm adınızdan kaldırmak, bu yolun% 20 içermesini engellemek 

4
Ajaco

Sadece açıkça bariz bir şekilde işaretleyin: "Derleme başladığında çıktı penceresini göster" etkin değilse, derlemenizin başarısız olup olmadığını fark ettiğinizden emin olun (solda küçük "derleme başarısız" hatası) !!!!

4
tbone

Entity Framework'e başvuruda bulunulan bir projeyi açtıktan sonra bu hatayı aldım, bu yüzden bu tür referansları sildim ve Ente Framework sürüm 6.0.0.0 sürümünü pece yöneticisi aracılığıyla yeniden yükledim:

install-package entityframework -version 6.0.0.0

Hata hala gösteriliyordu, bu yüzden bu referansların orada olduğunu düşündüm, çünkü projeye önceden "önceden yüklenmiş" bir Entity Framework sürümü vardı, ancak gerçekten işe yaramadı.

Böylece packages.config dosyasına gittim ve başka bir referans olduğunu fark ettim:

<packages>
  **<package id="EntityFramework" version="5.0.0" targetFramework="net45" />**
  <package id="EntityFramework" version="6.0.0" targetFramework="net45" />
</packages>

Sonra çizgiyi sildim, projeyi ve konteyner çözümünü temizledim ve yeniden yaptım ve sonunda çalıştı.

3
CoderRoller

Hata mesajına dayanarak dosya yolunun kesildiğine inanmıyorum. Sadece yanlış görünüyor. İletiyi doğru okuyorsam, şu adresten DLL dosyasını arıyor görünüyorsun.

ÇALIŞMA = -\Tools\VersionManagementSystem\BusinessLogicLayer Debug\BusinessLogicLayer.dll\bin \

Bu geçerli bir yol değil. Geçersiz bir değere ayarlanmış derleme işleminde bir makro tanımınız olabilir mi?

3
JaredPar

Benim durumumda, bu hatalara NuGet paket yöneticisindeki bazı bozulmalar neden oldu. Çözümün alt projeleri oluşturulmadı, ancak meta veri hataları nedeniyle hiçbir hata gösterilmiyordu.

Tüm NuGet paketleri düzeltildikten sonra, proje tekrar düzgün bir şekilde inşa edilebilir.

3
Nick

Ben de aynı sorunu yaşadım. Benim durumumda, proje hala serbest bırakma kipinde inşa edilecek ve tam da hata ayıklamak için başarısızlığa uğramaya çalıştığım zamandı.

Sorunu çözmek için yaptığım şey, tüm borçları (ve diğer dosyaları serbest bırakma klasörümden) hata ayıklama klasörüme kopyalamaktı. Bunu her proje için yaptıktan sonra, hatalar eridi.

3
Jack Fairfield

NuGet içeren packages klasörünü çözüm klasöründe kaldırmak benim için çalıştı. Yeniden inşa ettikten sonra her şey tekrar çalıştı. Çözümdeki References öğesini ve sarı üçgeni olan referansları kontrol edin.

Örnek resim:

 Enter image description here

3
Ogglas

Benim durumumda bu hatayı aldım, çünkü projemden biri çözümün diğerlerinden farklı bir .NET framework sürümü kullandı. NuGet paket yöneticisini NLog'u kurmak için kullandım, bu yüzden bence bu projenin .Net sürümü için kurulmuş.

Bu gönderideki tüm çözümleri denedim, ancak hiçbiri çalışmıyordu. NLog'u kaldırdım, çözümü temizledim ve derlemeye çalıştım: Aynı şey, CS006 hatası.

Bu projeden obj\Debug içindeki bütün dosyaları silerken, çözüm derlendi.

3

Bir üretim ortamında konuşlandırılmış çok eski bir kütüphaneyi çözdüğümde de benzer bir problem yaşadım, ancak kaynak kodu kaybedildi.

.Dll dosyası aldım, kod çözdüm ve projeler ürettim. Bu tür birkaç hatadan dolayı çözümü oluşturamadım.

Önceki cevaplardaki ipuçları işe yaramadı, ancak bir süre sonra bazı projelerde System.dll gibi bazı montajlara yapılan eksik referansları fark ettim.

A projesinin B projesine bağlı olduğunu varsayalım. B projesinde System.dll dosyasına bir referans yoktu, ancak derlemeden sonraki hata "Metadata dosyası 'B.dll' bulunamadı" gibiydi.

B projesinde eksik System.dll hakkında hiçbir hata yoktu.

B projesinde System.dll gibi kütüphanelere başvuru ekleme sorunu çözdü . (System.Data, System.DirectoryServices, etc.)

3
drfaka

4.6.1'deki bir sınıfa 4.6.2'deki bir arayüzü referans aldım ... ... sınıfı 462'ye yükselttim.

3
Antonin GAVREL

Benim durumumda çözümdeki bazı projeler Herhangi bir CPU 'ya bir kısmı x86 olarak hedeflendi. Platform hedefi çözüm boyunca birleştirdikten sonra derleme hatası kayboldu.

3
Tomas Kubes

Benim kişisel durumumda, çözümdeki projelerden birine referans ekleyemedim ve bu benim için hatayı başlatan şeydi.

2
Jon D

Benim durumumda ReSharper aptallıktı ve projem C # 6'yı hedef alsa da, bana sadece C # 7 özelliklerinin kullanımı için refactoring teklif edildi.

Bu sebeple bu kodu değiştirdim.

private DateTime? _joinedDate;
[Column(TypeName = "DateTime2")]
public DateTime JoinedDate
{
    get { return _joinedDate ?? DateTime.Now; }
    set { _joinedDate = value; }
}

bu koda

private DateTime? _joinedDate;
[Column(TypeName = "DateTime2")]
public DateTime JoinedDate
{
    get => _joinedDate ?? DateTime.Now;
    set => _joinedDate = value;
}

Bazı nedenlerden dolayı, alıcı ve ayarlayıcıyı ifade gövdeleri kullanarak kullanmak, derleyiciyi bir sözdizimi hatası yerine bu meta veri hatasıyla ortaya çıkardı.

2
Mathieu VIALES

Bu sorunu yaşadım, çünkü .nuget\NuGet.exe depoya dahil edilmedi. NuGet.targets’da DownloadNuGetExe özelliğini etkinleştirdiğim halde, indirmeye çalışırken bir proxy hatası bildirdi. Bu, projenin geri kalanının başarısız olmasına neden oldu.

2
wtjones

aaaaa ve altı yıl sonra Visual Studio 2015’e yükseltme sırasında aynı sorun. Bu özel çözüm bu listede olmadığı için buna ekliyorum.

Referans verilen iki dll c:\windows\system32 ... folder ..__ 'dır ... Onları sistem dışı bir klasöre taşımak ve yeni klasöre bir referans eklemek sonunda düzeltti. Sorunların geri kalanı gerçekten de burada zaten başkalarının söylediği şeydi.

2
Serve Laurijssen

Sorunun nedeni DLL dosyalarına ve çözümdeki projelere referanslar ekleyerek karışık olmanız olabilir.

A, B ve C projeleriniz varsa:

  • Çözümde proje olarak bir referans B ve C.
  • B, DLL dosyası olarak C'ye başvuruyor (bir dosyaya referans)

Her projeyi ayrı ayrı oluşturabilirsiniz, ancak şu şekilde biten bir çözümü yeniden oluşturamazsınız: Meta veri dosyası 'C.dll' bulunamadı.

Referansı bir dosyadan projedeki bir projeye değiştirerek çözüme ulaştırır.

2
Liero

User @burzhuy'un işaret ettiği gibi, sadece Error List penceresine değil Outputwindow'a bakmak önemli olabilir.

Benim durumumda Roslyn compiler üzerinde değişiklik yapmaya çalışıyordum. Derleme projeleri, ortak alanların derleyicinin ortak arayüzü olarak tanımlanmış olanlarla tutarlı olup olmadığını görmek için ek bir kontrol uygular, aksi takdirde bir RS0016 veya RS0017 hatası üretir. Birkaç ortak alan ekledim ve fareyi hatanın üzerine getirip "Genel API’ye ekle" seçeneğini seçerek RS0016 hatasını düzelttim.

Sonra fikrimi değiştirdim ve ortak alanları farklı bir sınıfa taşıdım. Nedense bu "Metadata dosyası hata bulunamadı" üretti ve daha fazla hatayla karşılaştım.

Doğru PublicAPI.Unshipped.txtfile dosyasını bulmanız gerekiyor (benim durumumda E:\Roslyn\32414\src\Compilers\Core\Portable konumundaydı) ve artık alakalı olmayan satırları kaldırmak için el ile düzenlemeniz gerekiyor.

1
RenniePet

Benim durumumda bu hata mesajını TFS'den projenin en son sürümünü aldıktan sonra, çözümdeki yanlış projenin başlangıç ​​projesi olarak işaretlemesinin basit bir nedeni var. Başlangıç ​​projesi olarak doğru projeyi seçmek bunu benim için çözdü.

1
Joe Dyndale

Vay, bu hata her yerden gelebilir gibi görünüyor.

Neyse, MVC uygulamama yeni bir WebAPI denetleyicisi ekledim ve otomatik olarak NuGet'ten tüm referansları aldım. Az sonra, NuGet UI'dan referansları kaldırdım ancak dosyaları kullanarak dosyaları silmeyi unuttum (ör. System.Http).

Bazı nedenlerden dolayı, aldığım hata, kullanılmayan bir değişken hakkında basit bir uyarı ile birlikte, bu oldu.

En azından uyarıdan kurtulmak ve yeniden inşa etmek için kullanılan değişkeni yorumladım, var olmayan referansı kullanan tüm dosyaları işaret ettim. Bu dosyaları sildikten sonra her şey yolunda gitti.

1
Alexander D

Bu sorunla karşılaştım. Benim durumumda birden fazla C # projesine DLL dosya olarak başvuru yapıldı. DLL dosyası olarak kullanılan bir projede herhangi bir derleme zamanı hatası (diğer projelerde) hatalara neden olabilir. Bunun nedeni, derleme zamanı hatasının ilgili DLL dosyasının oluşturulmasını engellemesidir ve bu, eksik DLL dosyasına başvuran projelerde bir dizi hatayla sonuçlanır.

Bu nedenle, Solution Explorer'da yeniden oluşturduğunuzda (önemsiz derleme zamanı hatalarını yok sayarak), bir grup "meta veri dosyası .dll bulunamadı" hatası ortaya çıkar (basit bir yeniden yapılanma dışında neyin yanlış yaptığınızı düşünmenizi sağlar).

Bu sorunla karşı karşıya kalırsanız, o zaman en iyi çözüm çözümü temizlemektir ve ardından hangi projenin hatayı başlattığını bulmak için her projeyi birer birer oluşturmaktır.

1
josepainumkal

Bu sorun, Meta Veri hatası nedeniyle kodunuzda görünmeyen sözdizimi hatası nedeniyle ortaya çıkabilir. Bu nedenle, önceki yanıtlardaki işlemlerden herhangi birini yapmadan önce kaynak dosyanızı inceleyin.

1
Hassan Malik

Projede başvuru olarak Microsoft.CSharp Assembly'ı kaldırırsanız, bu hatayı alacağınızı öğrendim.

1
Mirek

C # 7 kodunu yazdığımda sorunum geldi ancak proje .net framework için eski sürüm kullanıyor 

1
Abdullah Tahan

Bu tür bir çağrıyı Visual Studio 2015 ile yaptım, bir açıklamadan sadece boş açılı ayraçları geride bırakan bir uzatma yöntemine yapılan çağrı tipini kaldırdım.

Yani obj.extensionMethod<Type>() yerine obj.extensionMethod<>() vardı.

Bu hatanın bu hatayı nasıl üretebileceğini göremediğim için bunu Visual Studio'da bir hata olarak sınıflandırırdım.

1
mschwaig

Benim için sorun iki Visual Studio penceresinin açılmış olmasıydı, projem bir pencerede hata ayıklamaktaydı ve başka bir pencerede oluşturmaya çalıştım.

Hata ayıklamayı bırakmak zorunda kaldım ve başarılı bir şekilde oluşturmama izin verdi.

1

Yukarıdakilerin hepsinin sadece bir fark olduğuna katılıyorum. Benim durumumda: Visual Studio 2019 kullanıyorum. VS-2019'u kapattım ve VS-2017 ile açtım. ve her şeyin mükemmel çalıştığı projeyi yeniden oluşturun! Benim pozisyonumdakiler için: 19.04.2019

1
marven
  1. Çözüme sağ tıklayın ve Clean seçeneğine tıklayın.
  2. Çözüme sağ tıklayın ve Yeniden Oluştur seçeneğine tıklayın.

Benim durumumda, bir .NET Framework 4.6.1 projesine bağımlılık olarak bir .NET Framework 4.7 projesine başvurduğumu fark ettikten sonra bu sorunu çözdüm. Proje 4.7 ile 4.6.1 arasında geçiş yaptıktan sonra başvurum normal olarak derlendi.

0
Alexandre Lima

Ana projenin .csproj dosyasını kontrol edin. Projeleri kaldırmanız veya çözümdeki referansları değiştirmeniz durumunda Visual Studio bunu temizlemez.

Eski projelerim.

0
Tarmo Elfving

Bu hatayı gördüm, çünkü kodumda şu satır vardı (hala SQL modunda düşünüyordum gibi görünüyor):

if(myVar is null)
    DoSomething();

Visual studio (2017), tasarım veya derleme zamanında hiçbir hata bildirmedi, ancak proje derlenmeyip "eksik .dll" hatasını verdi. Hatalı hattı değiştirdikten sonra:

if(myVar == null)

Sorun çözüldü.

0
Gavimoss

Benim durumumda, bununla birlikte bir sürü başka yapı hatası da vardı (bazı basit tip dönüşümler), bunu çözmeye çalışırken kafamı çiziyordum ve diğer hatalara odaklanmıyordum.

Sonunda benim sorunumu çözdü, tüm diğer derleme hatasını düzelttim ve sonra tekrar yapıyorum ve başarılı bir şekilde yapıyorum.

Bu yüzden eksik DLL dosya hatası ile birlikte başka derleme hataları varsa ve sizin için başka hiçbir şey çalışmıyorsa, önce diğer hataları düzeltip daha sonra çözümü yeniden oluşturmaya çalışın.

0

Şimdiye kadar onlarca yanıtın hiçbiri benim için çalıştı. Benim durumumda da hatayı aldım:

Tuple öğesi adı 'Değer' çıkarıldı. Bir öğeye çıkarılan adla erişmek için lütfen 7.1 veya daha büyük dil sürümünü kullanın

Bu, "Metadata dosyası '.dll' nin yanında görünemedi" binadaki hatalar bulunamadı, ancak hatalar bazen IDE "yakaladığında" olduğu gibi kısa bir süre sonra kayboldu.

Bulmak için hatayı çift tıklamak ve rahatsız edici kodu silmek, onu düzeltir.

Aksi takdirde, Visual Studio'da bunu deneyebilirsiniz:

Menü Proje → <Proje adı> Özellikler Yapı → düğmesi Gelişmiş Dil Sürümü C # <son küçük sürüm> (örn. " C # 5.0 ")

Ve bu da onu düzeltir.

Görünüşe göre "Meta veri dosyası '.dll' bulunamadı" genellikle diğer bazı sorunların bir belirtisidir, bu nedenle en iyi çözümlerin hiçbiri sizin için işe yaramazsa, diğer hataları ve uyarıları kontrol edin ve asıl sorunu bulmaya çalışın.

0
MGOwen

Aynı sorunu ve başka bir çözümü de yaşadım.

Sorun: Tek çözüm, çoklu projeler. Diğer sonuçlardan bazılarını kullanan ana uygulama başarısız oldu:

CSC: CS0006 hatası: Meta veri dosyası 'C:\Repos\TheApplication\TheApplicationCommon\bin\Debug\TheApplication.dll' bulunamadı

Fakat aslında bu Proje C:\Repos\TheApplication\TheApplicationCommon\bin\Debug\TheApplicationCommon.dll.__ 'ı üretti, aynı dll'yi kullanan başka bir proje de kusursuzca derlendi.

PostSharp 3.x.x.x kullanan ve şimdi PostSharp 4.x.x.x kullanan dahili bir NuGet paketini güncellemeden önce. Ve benim çözümüm bunu * .csproj dosyama eklemekti:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="...">
  <Import Project="..." Condition="..." />
  <PropertyGroup>
    ...
    <AssemblyName>TheApplication</AssemblyName>
    ...
    <SkipPostSharp>True</SkipPostSharp> <!-- This line -->
  </PropertyGroup>
...

Başka bir Çözüm-> Temiz, başka bir Çözüm-> Yeniden oluştur ve yerel olarak ve derleme sunucusunda çalışıyor.

Umarım birine yardım eder. İş parçacığı eski ve oldukça uzun ama bu sorun sık sık geri dönüyor ve bu çözümü henüz görmedim. Visual Studio 2017 (15.8.x) kullanarak BT.

0
ecth

Bin/obj klasörlerini silip ardından projeyi yeniden oluşturmak benim için çalıştı.

Benim durumumda, inandığım şey, projeyi ilk kurduğumda dll dosyamın oluşturulmadığı bir çalışma zamanı hatası yaşadım.

Bir projeden diğerine atıfta bulunulduğunda bu oldu. Bahsettiğim proje, konuyla ilgili olandı.

0
npineda

Bu cevapların çoğu deneme yanılma gibi geliyor. Benim durumumda, basitti: başvurulan dll, belirli bir konumda bulunamadı.

Derleme hatalarını görüyorsanız, genellikle bu durumda, derleme birçok borçtan şikayet eder. Anahtar, eksik olan doğru dll'yi bulmak. Benim durumumda, çözümümdeki projelerden birinin proje referansı yerine doğrudan bir dll referansı vardı. Bu nedenle, arızalı çözümün eksik dll'yi belirli bir yerde bulduğundan emin olmak için arızalı çözümü kurmadan önce bu dll'yi çıkaran projeyi oluşturmam gerekiyordu.

Vay ... bu basitti, ama kelimelerle ifade etmek oldukça zordu.

0

Benim durumumda Web.config dosyamın içindeki 

<?xml version="1.0" encoding="utf-8"?>

buna

<?xml version="1.0"?>

sorunumu çözdüm

0
Elnoor

Benim durumumda, yerel olarak NuGet paketlerine referans verirken ve dizinlerini başka bir yere taşıdığımda başıma geldi, NuGet.Config içindeki yolu değiştirdim, ancak ne yazık ki, başvuru yolunu güncellemek için .csproject dosyalarını manuel olarak değiştirmem gerektiğini, ancak hata mesajını değiştirmem gerektiğini keşfettim. CS0006 bu sorunu açıklamaktan çok uzaktı. Genel olarak bu, DLL 'e bulunamayan bir referans olduğunda da meydana gelir, sorun ile proje içinde referanslarınızı arayabilir ve problemle ilişkilendirilen sorunla ilgili bazı referanslar bulacaksınız. , bunları düzeltmeyi deneyin ve beklendiği gibi çalışması gerekir.

0
Ali Ezzat Odeh

Bu sorunla getting latest (Team Foundation Server (TFS)) komutundan sonra karşılaştım.

Anlaşmazlıkları çözdükten sonra, bir namespace that does not exist in the project ifadesi kullandım.

Böylece, using ifadesini sonra clean and rebuild 'dan kaldırdım ve her şey yolundaydı.

0

Bir derleme yaptığımda, genellikle Visual Studio 2017'de böyle hatalar ortaya çıkar:

Error   CS0006  Metadata file 'C:\src\ProjectDir\MyApp\bin\x64\Debug\Inspection.exe' could not be found MyApp   C:\src\ProjectDir\MyApp\CSC 1   Active

Ancak bazen bunun gibi bir hata birkaç saniye gösterebilir ve sonra kaybolup yukarıdaki mesaja geri döner:

Error   CS1503  Argument 1: cannot convert from 'MyApp.Model.Entities.Asset' to 'MyApp.Model.Model.Entities.Inspection' MyApp   C:\src\ProjectDir\MyApp\ViewModels\AssetDetailsViewModel.cs 1453    Active

Bu yüzden ilk hatayı gidermek için zaman harcadım ama asıl sorunun ikinci hatadan kaynaklandığı ortaya çıktı. İlk önce tüm/bin ve/obj dizinlerini silmek zorunda kaldım, daha sonra yukarıda belirtilen şekilde .suo dosyalarını da sildim. Bu, bir arayüz sorununa sorunu daraltmamı sağladı.

Arayüzümde bu vardı:

    Task<IList<Defect>> LoadDefects(Asset asset);

Ancak gerçek uygulamamda şu kod vardı:

    public virtual async Task<IList<Defect>> LoadDefects(Inspection inspection)
    {
       var results ...
       // ....

        return results;
    }

Arabirimi şu şekilde güncelledikten sonra yapı başarıyla tamamlandı:

    Task<IList<Defect>> LoadDefects(Inspection inspection);

Öyleyse VS'de önbellekleme yapmak, asıl sorun CS1503 hatası iken CS0006 hatasını göstermeye devam etmesine neden oldu.

0
user8128167

Önceki çözümlerin hiçbiri benim için çalıştı, bu yüzden ne yaptığını paylaşacağım.

Bazı yeni sınıf kütüphanelerini birbirine bağlayan başka bir daldan birleştirdikten sonra bu sorunu yaşadım. Projelerdeki referansların silinmesi ve yeniden oluşturulması nihayet sorunu çözdü. Görünüşe göre Visual Studio yanlış dosya yollarını birleştirmişti.

0
Nick Van Brunt

Benim için sorun, derleme çıktısında bulunmayan bir hataydı, yani başlangıçta farklı ad alanlarında iki yardımcı sınıfım vardı. İkincisinin ad alanını ilk olanınkiyle eşleşecek şekilde değiştirdim (ilkinde başka bir yardımcı sınıf olduğunu bilmeden), ve o zaman bu hata ortaya çıkmaya başladı. 

Mantıksal Katman kütüphanesi DLL dosyası oluşturulamadığı ve ana uygulama bulamadığı için yapı çıktı hatasının ortaya çıktığını hayal ediyorum.

Çözüm, ikinci yardımcı program sınıfını farklı bir ad alanına geri döndürmekti ve o zaman gerçek derleme hataları ortaya çıkmaya başladı. Bunları ayırdıktan sonra derleme tamamlandı.

Genel olarak, önceki çözümlerden herhangi biri sizin için işe yaramazsa, Visual Studio'nun göstermediği koddaki hataları bastırmış olabilirsiniz, bu nedenle kodlama adımlarınızı yeniden izlemeyi ve herhangi bir düzensizliği kontrol etmeyi deneyin.

Not: Bu Visual Studio 2015 Topluluk Sürümü'ndeydi

0
Remus.A

Çözümü çok değiştirdikten, değişiklikleri rafa kaldırıp geri aldıktan sonra bu sorunu yaşamaya başladım.

Bunu çözmenin tek yolu, TFS'den yerel klasörüme eşlemeyi kaldırma ve tekrar eklemekti.

0
NoHero

Bu sorun, proje için seçilen . Net sürümü tarafından desteklenmeyen özellikleri kullanmanızdan kaynaklanabilir.

Benim durumumdaki sebep null olup olmadığını kontrol etmek ve istisna atmak için ?? operatörünü kullandım.

O kadar garip ki VS, derleme hataları listesindeki sorunun asıl nedeni hakkında bilgi vermiyor.

Ancak bu bilgiyi yapının Output günlüklerinde bulabilirsiniz.

0
Alex Valchuk

Çok ilginç! Önceki tüm cevapları denedim ve maalesef hiçbir şey işe yaramadı.

İki hatayla karşılaştım:

  1. .Dll dosyası eksik
  2. Yöntem zaten aynı parametrelerle başka bir yerde tanımlanmış

İkinci hatayı önce başka bir yerde çoğaltılan işlevi silerek temizledim.

İlk hatam - bu .dll dosyası eksik kendi kendine çözdü.

Demek istiyorum ki, .dll eksik dosya hatası ile birlikte tek bir hatadan daha fazla varsa, lütfen önce diğer hataları çözmeye çalışın. Belki .dll hatası kendi kendine çözer! 

0
A user

Benim durumumda, hedef çerçeveyi ayarlamak sorunu çözdü:

  1. Projeye sağ tıklayın ve Properties

  2. Uygulama , değiştir Hedef çerçeve ile ana proje aynı (örneğin, ".NET Framework 4.5").

0
Hamid

Visual Studio IDE sahne arkasında hiçbir yapı oluşturmuyor, Msbuild uygulaması yapıyor. VS IDE aslında sadece Msbuild tarafından kullanılan proje dosyasını oluşturur ve sık sık kendi başına bir şeyler bulmak için IDE 'e bırakırsanız hata yapar. Metadata file '.dll' could not be found hatası alıyorsanız, doğru/beklenen montajların bulunamamasından kaynaklanıyor olabilir. Bu nedenle, belki Visual Studio 4.5 çerçeveli bir uygulama için bir proje dosyası oluşturuyor olabilir ve siz 4.0 montajlarına atıfta bulunurken 4,5 montaj bekliyor. Bu yüzden, uyumsuzluklar için Visual Studio ayarlarınıza bakın veya proje dosyasına kendiniz gidin ve doğru yolu <Reference Include="C:\\correct path to Assembly\\yourAssembly.dll" /> belirterek elle düzeltin.

0
annoying_squid