Bir MEF eklenti projesine başvuru eklediğimde neden bir uyarı simgesi alıyorum?


321

Doğrudan eklenti projesine başvurarak ve eklenti sınıfını örnekleyerek bir eklentinin çekirdek sınıfını test etmek istiyorum. Bir test Konsolu Uygulaması projesi oluşturup eklenti projesine bir proje başvurusu eklediğimde, Başvurular listesindeki başvurunun yanında bir uyarı simgesi (ünlem işaretli sarı üçgen) alıyorum.

Bunun yerine eklentinin derleme derleme çıktısı olan dll'ye bir referans eklediğimde, böyle bir uyarı almıyorum. Bu uyarı bana ne anlatmaya çalışıyor olabilir?


8
Çoğu zaman, uyarı üçgenleri araç ipuçlarına veya hata penceresinde (başarısız olursa) bir girişe sahip olacaktır. Bir tahminde, iki projenin uyumsuz bağımlılıkları vardır.
Damien_The_Unbeliever

2
Oluşturmaya çalışırken konsolda herhangi bir uyarı var mı?
Jite

231
Bunu farklı .net
çerçeve

4
@OP kad81'in cevabını doğru olarak seçebilir misin
Andy

5
Bu beni her zaman yakalar. Bir .NET 4 çözümüne ve varsayılana yeni bir proje eklemek 4.5'tir.
Robin French

Yanıtlar:


674

Sorunun yorumlarında belirtildiği gibi, projeler arasındaki farklı .NET Framework sürümleri buna neden olabilir. Farklı bir varsayılan sürümün kullanılmadığından emin olmak için yeni projenizin özelliklerini kontrol edin.


13
Bilmem gereken şey, o zaman neden visual studio bu referansları eklemeyi kabul etti?
Anders Lindén

16
VS 2015 kullanıyorum ve sorun hala var. Buraya gelene kadar yarım saat kaybettim.
Alisson

14
Hatta vurgulu metin veya sorunun ne olduğunu açıklayan hatalar
matao

6
Bunun sorunun kökü olduğunu doğrulayabilir. 15.3 Güncelleştirmesi ile Visual Studio 2017'nin gerçekten anlamlı bir ileti göstermeme sorununu hala gidermediğini de doğrulayabilir. Çok sinir bozucu.
Greg R Taylor

4
@matao Kabul etti! Bu can sıkıcı bir hatayla ilgili herhangi bir ayrıntı alamadım ...
nterry

74

Aynı sorunu bir ASP.Net Web Uygulaması ve Web Uygulaması içinde başvurulması gereken iki kütüphane sınıfı projesi ile de karşılaştık. Derlemenin neden başarısız olduğu ve referansların geçersiz olduğu hakkında hiçbir bilgi vermedim.

Çözüm, tüm projelerin aynı Hedef Çerçeveye sahip olmasını sağlamaktı:

Visual Studio 2015'te - Sağ Tıklama projesi> Özellikler> Uygulama> Hedef Çerçeve

Çözümü kaydedin, temizleyin ve yeniden oluşturun. Proje referansları artık sarı uyarılar olarak görünmemelidir ve çözüm derlenecektir.

Web Uygulamam .Net 4.5'i hedeflerken, diğer iki bağımlı kütüphane sınıfı projesi .Net v4.5.2'yi hedefledi


44

Birlikte kullanmak istediğiniz projelerin her ikisi (veya tümü) için:

Projeyi sağ tıklayın> Özellikler> Uygulama> Hedef .NET çerçevesi

Her iki projenizin (veya hepsinin) aynı .NET framework sürümünü kullandığından emin olun.


Mükemmel, benim için çalıştı! .NET Framework 4.5.2 ile bir MVC projem vardı. Ve referans veren sınıf kütüphanelerim .NET Framework 4.7 idi.
Mike Upjohn

Mevcut bir çözüme eklenen yeni projelerin hangi sürümü bilecek kadar akıllı olacağı düşünülüyor, ama ne yazık ki durum böyle değil.
Ron

38
  1. Her proje için tüm sürümlerin aynı olduğundan emin olun , her bir projeyi tıklayın ve buradaki sürüme bakın. Proje> Özellikler> Uygulama> Hedef .NET çerçevesi
  2. a. Araçlar> Nuget Paket Yöneticisi> Paket Yöneticisi Konsolu Tipi Güncelleme-Paketi -Reinstall (geçin çalışmıyor eğer 2.b )

    b. BU ELEŞTİREL ANCAK ÇALIŞACAK EN BÜYÜK OLASI . <Hedef> Belki birden çok satırla </ Hedef> genellikle .csproj'un alt kısmında bulunur.

  3. Çözümü kaydedin, yükleyin ve oluşturun.


1
Bunun için teşekkürler, Visual Studio'da .Net sürümleri hakkında hoş bir hata mesajı burada sapmaz!
colmde

1
@colmde ilginç bir şekilde çözümü temizlerseniz çıktı penceresi aşağıdaki iletiyi görüntüler: 'Paket, hedef çerçeve .NetFramework XXX yerine .NetFramework XXX kullanılarak geri yüklendi. Paket, projenizle tam uyumlu olmayabilir '
elszeus

1
Diğer cevaplarda belirtilmeyen Bölüm 2.b benim için kritikti! 2.b <Hedef> Belki birden çok satırla </ Hedef> genellikle .csproj'un alt kısmında bulunur.
shelbypereira

1
Bölüm 2.b tamamen deli ama işe yarıyor! teşekkürler
Elo

1
Teşekkürler 2.b benim için de hile yaptı. Bunu ASLA kendim çözemezdim.
Henrik Clausen

23

Geçerli paketin tüm projelerine tüm paketleri yeniden yükleyin:

Update-Package -Reinstall

2
Bu öneri sorunumu doğrudan çözmese de, senaryom için beni doğru yönde gösterdi. Yardımcı
John Lee

1
Tüm paketleri çıkardı, kurdu ve sarı üçgenler geri geldi.
Anders Lindén

8

Aynı çerçeve sürümünü hedefleyen projelere sahip olduğunuzdan emin olun . Çoğu zaman bunun nedeni, mevcut projenin (başka bir projeye referans eklediğiniz yerde) diğerlerinden farklı bir .net çerçeve sürümüne işaret etmesidir .


5

NETFramework başvurulan dll ve DLL eklediğiniz proje kontrol edin. Örnek: DLL ==> desteklenen çalışma zamanı sürümü = "v4.0" Proje ==> destekli çalışma zamanı sürümü = "v3.0"

Uyarı simgesi alacaksınız. Çözüm: genelinde dll sürüm tutarlılığı olun.


5

Benim için, bir .NET Framework 4.7.1 konsol uygulamasında bir .NET Standard 2.0 sınıf kitaplığına başvururken bu sorunla karşılaştım. Evet, çerçeveler farklı, ancak uyumludur (.NET Standardının hem .NET Core hem de .NET Framework ile jive olması gerekiyor.) Proje referansını temizlemeyi, yeniden oluşturmayı, kaldırmayı ve okumayı vb. Denedim. . Son olarak, Visual Studio'dan çıkıp yeniden açmak sorunu çözdü.


4

Bu sorunun sorulmasından bu yana uzun zaman geçti, ancak birisi hala ilgileniyorsa - son zamanlarda benzer simgelere rastladım. VS 2008 kullanarak bir C # .net projesi derleme. VS bu başvurular için derlemeleri bulamadı bulundu. VS'yi çift tıklattığımda referansları yeniledi ve bazı [EDIT: ŞİMDİ bulabiliriz] 'deki simgeleri kaldırdı. Kalan referanslar için, ilgili derlemeleri derlemek zorunda kaldım.


4

@ Kad81 cevabına 2 sent ekledim,

Visual Studio -> BUILD -> Yapılandırma Yöneticisi'ne gidin

Sağ üst köşedeki "Etkin Çözüm Platformu" açılır menüsünde (benimki VS 2012), "Karışık Platformlar" ise, üçüncü taraf meclislerinize dayanarak uygun bir platform olarak değiştirin.

Sonra listedeki projelerin her birinde, tüm proje için aynı platformu seçtiğinizden emin olun. (x86 yoksa, "" seçin, ardından "x86" yı seçebilirsiniz.)

Önce kütüphane projelerini ve ardından referans projeleri yeniden oluşturun. Bu yardımcı olur umarım.


4

VS'yi kapatıp açmayı deneyin.

Aptalca görünüyor ama yukarıdakileri takip ettikten 1 saat sonra ve her şeyi tamamlanmış buldum. VS 2017'yi yeniden başlattım ve sorunlar ortadan kalktı.


1
Benim için çalıştı. Aptalca ya da bazen, Visual Studio karışır ve önbellek bozulur. Bunu önerdiğin için teşekkürler - işe yaradığını düşündüğüm için aptal hissettim çünkü bunu yapmaktan nefret ettim ama ne "heck" - bir saat sonra başka şeyler de yapabilirim ve tada çalıştı
Blake

2

Asp.net çekirdeğinde bazen proje adı alanını veya adını değiştirirseniz uyarı gösterir. Bu tür uyarıları kaldırmak için sadece Projeyi Kaldır ve tekrar yükle. Sorun hala devam ediyorsa Meclis referansınızı bulamayacağınız anlamına gelir.


1

Farklı bir nedenden dolayı bu ikonlarım vardı. Tüm projelerimiz için büyük bir çözümümüz var (yaklaşık 100). İlgilendiğim projelerin alt seçimini yaptım ve yeni bir çözüm yaptım. Ancak derlenen dll referansları yerine proje referansları nerede ....

Bazı araştırmalardan sonra bu bağlantıyı GitHub'da VS2015'teki yeni davranış olduğunu açıklayan buldum.

GitHub sayfasında proje referanslarını ikili referanslara dönüştürmek için bir geçici çözümü açıklarlar.


1

Bazı çalışmayan şeyleri düzeltmek için bazen bazı kütüphaneleri kaldırmak mantıklıdır , bu nasıl garip olmaz.

Her neyse, sorunun çok geniş olduğuna ve farklı faktörlerden kaynaklanabileceğine inanıyorum , bu yüzden durumumu / çözümümü paylaşmak istiyorum.

Xamarin Forms ve Telerik kütüphaneleriyle (müşteri tarafından getirilen) bir projem vardı. Mesele genel olarak kütüphanelerin paketler klasörüne dahil olmadığı ya da Nuget (ücretli olanlar) aracılığıyla mevcut olmayan bileşenlerle ilgiliydi.

Tüm proje Referanslar "sarı" idi, korkunç ve korkutucu görünüyordu.

Çözelti sadece oldu kaldırmak için bu Telerik başvuruları (yani kullanıyorlardı kodda birkaç kontroller dahil). Bundan hemen sonra tüm referanslar sihirli bir şekilde ortak normal gri renklerini aldı ve hatalar (çoğunlukla) kayboldu.

"Çoğunlukla" - çünkü "öğe etrafındaki tüm kırmızılar" hata iletileri "öğe hiçbir yerde tanımlanmadı" bazen sabit durur. Bu garip ve rahatsızlık veriyor, ancak yine de projeleri derleyip çalıştırabiliyorum: sadece çözümü temizlemeli, Visual Studio'yu yeniden başlatmalı, biraz dua et, tekrar temizle, obj / bin klasörlerini kaldır, tekrar başlat ve iyi çalışıyor.

Önemli olan , hata mesajları kesinlikle başka bir şey söylediğinden, mevcut olmayan kitaplık referanslarını kaldırmaktır . (Örneğin, "Xamarin.Build.Download.XamarinDownloadArchives bulunamadı veya bir şey bulamıyor" vb. Gibi bir şeydir, ancak bu sadece bazı referanslarınızın olmadığı anlamına gelebilir.

Daha sonra paketler klasörünü kaldırın, projeyi / çözümü yeniden yükleyin / yeniden açın, "Nuget Paketleri Yönet" e gidin ve "Geri Yükle" düğmesini tıklayın.


1

.Net Core 3.1'i hedefleyen tüm projelerle Visual Studio 2019'u kullanarak çözüm:

  1. Temizle / Oluştur / Yeniden Oluştur.
  2. Visual Studio 2019'u yeniden başlatın

0

Aynı problemle de karşılaştım ama durumum yukarıdaki durumlardan biraz farklıydı. Farklı bir bilgisayarda oluşturulan bir projeyi açmaya çalıştım. VS'yi yeniden başlatan, .NET sürümünü değiştiren bir başvuru eklediğinizde paket klasörünün yolunun güncelleştirilmediğini veya belirtilen herhangi bir önerinin sorunu çözmediğini buldum. Csproj dosyasını notepad ++ ile açtım ve paketleri klasörüne ilişkin tüm yolları düzelttim. Sonra; tüm uyarılar gitti. Umarım yardımcı olur.



0

Yardımlarınız için hepinize teşekkürler. Sorunumu nasıl çözdüğümün bir dökümü:

Projenize sağ tıklayın> Özellikler

Uygulama altında hedef Çerçeveyi değiştirin. Benim durumumda ImageSharp .Net 4.6.1 kullanıyordu. Bunu Packages.config dosyasında bulabilirsiniz.

Proje referanslarınıza gidin. SixLabors'un sarı bir üçgeni olduğunu fark edeceksiniz. NuGet paketini güncellemelisiniz.

Referanslar> NuGet Paketlerini Yönet'e sağ tıklayın.

SixLabors'ı güncelleyin.

Küçük bir kod güncellemeniz olabilir (aşağıya bakın) ama bu sorunumu düzeltti.

ImageSharp.Image ImageSharp.PixelFormats.Rgba32 dönüştürmek?


0

Visual Studio 2019'da, projelerimin hedef çerçevelerinden biri .net çekirdeğiydi, ancak hedef çerçevesi .net standardı olan başka bir projeye başvuruyordu. Tüm projeleri .net standardını referans alarak değiştirdim ve simgeler kayboldu. Projenizin ne olduğunu görmek için projeyi sağ tıklayın ve özellikleri tıklayın ve Hedef çerçeveye bakın. Ayrıca, projenin kendisini normal tıklatabilir ve <PropertyGroup> altındaki <TargetFramework> etiketine bakabilirsiniz.


0

Çok projeli bir çözümde, Her şey başarısız olursa ... StartUp projesinde kontrol edin. Bağımlılıklar-> Montajlar ve erring başvurulan projenin orada olup olmadığına bakın. Çıkarın ve 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.