Sarı Uyarı Üçgenleri, Visual Studio 2017'deki Bağımlılıklar için ne anlama geliyor?


110

PCL kitaplığımı yeni bir .Net Standard kitaplığına dönüştürdüm ve aşağıda gösterilen Bağımlılıklarımda bazı Sarı Uyarı üçgenleri var:

görüntü açıklamasını buraya girin

Dönüşüm sırasında, tüm nuget paketlerini bağımlılıklar dahil olmak üzere getirdi, böylece ikili olabilir.

Sarı uyarı üçgenlerinin neyi temsil ettiğini nasıl öğrenebilirim?

DÜZENLE

Günlükleri Oluştur:

NuGet'in derleme sırasında paketleri geri yüklemesini önlemek için, Visual Studio Seçenekleri iletişim kutusunu açın, Paket Yöneticisi düğümüne tıklayın ve 'NuGet'in derleme sırasında eksik paketleri indirmesine izin ver' seçeneğinin işaretini kaldırın. NU1605: Algılanan paket düşürme: NUnit, 3.8.1'den 2.6.4'e. Farklı bir sürüm seçmek için paketi doğrudan projeden referans alın.
MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1)
MyProj.UI.Tests -> NUnit (> = 2.6.4) NU1605: Algılanan paket düşürme: 3.8.1'den 2.6.4'e NUnit. Farklı bir sürüm seçmek için paketi doğrudan projeden referans alın. MyProj.UI.Tests.iOS -> MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1) MyProj.UI.Tests.iOS -> NUnit (> = 2.6.4) NU1605: Algılanan paket düşürme: NUnit 3.8.1'den 2.6.4'e. Farklı bir sürüm seçmek için paketi doğrudan projeden referans alın.
MyProj.UI.Tests.Android -> MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1) MyProj.UI.Tests.Android -> NUnit (> = 2.6.4)


59
@Nkosi onların üzerinde gezinirken benim için hiçbir şey göstermiyor
kullanıcı1

1
Hataları Kontrol Et penceresi sonra
Nkosi

3
Bu referanslar, programınızı oluşturduğunuzda kullanılır. Ancak IDE için de önemlidirler, IntelliSense sağlamak için bunları çözmesi gerekir. Bu başarısız olursa, üçgen uyarı alırsınız. Hata mesajı almak için Oluştur> Oluştur'u kullanın.
Hans Passant

34
Bu bana olduğunda hiçbir yapı uyarısı yoktu. Uyarı simgesi, kullanıcı arayüzünde sıkışmıştı. Projenin boşaltılması ve yeniden yüklenmesi sorunu çözdü.
StackOverthrow

1
@TKK: Sanırım bu sadece birkaç dakika sürüyor, ardından kullanıcı arayüzünde uyarı üçgenleri beliriyor. En azından çözümü yeniden açtıktan sonra başıma gelen buydu. İlk başta düzeltildiğini düşündüm ama sonra uyarı üçgenleri aniden yeniden belirdi.
PussInBoots

Yanıtlar:


80

Göründüğü kadarıyla, yeniden oluşturmayı ve ardından VS'yi yeniden başlatmayı deneyin - ve gününüze devam edin :)


5
Bana klasik "yeniden başlatmayı dene" çözümünü hatırlattığın için teşekkürler :). Son bir saati, çözümümü oluştururken VS'nin neden paketleri kaldırdığını merak ederek geçirdim. VS'yi yeniden başlattım ve her şey beklendiği gibi çalıştı. / ugh
Ryan E.

1
Klasik "kapanır", her zaman dünyanın tüm kötülüklerinin çözümü değildir: /
sgrysoft

Tam olarak bugün Visual Studio 2019'umu en son sürümle (16.5.1) güncelledim. Ve sorun hala var ama bu çözüm hala çalışıyor :)
Willy David Jr

Kapatıp tekrar açın: -D
Don Ch

63

dotnet restoreherhangi bir karmaşık işlem yapmadan önce çalıştırın , hata penceresi veya çözüm gezginindekinden çok daha fazla bilgi alacaksınız.

Bu komutu Paket Yöneticisi Konsolunda çalıştırabilirsiniz:

Araçlar> NuGet Paket Yöneticisi> Paket Yöneticisi Konsolu


4
VS'yi yeniden başlatmak yerine çözümü yeniden açmak benim için de çalıştı.
Quido

neden dotnet geri yüklemesi yapayım? yapının bunu yapması gerekmiyor mu?
pabramlar

12

Derleme Günlüğünde şunu fark ettim:

C: \ Program Files \ dotnet \ sdk \ 2.0.2 \ Sdks \ Microsoft.NET.Sdk \ build \ Microsoft.NET.Sdk.DefaultItems.targets (199,5): uyarı: 'NETStandard.Library' için bir PackageReference projenize dahil. Bu pakete dolaylı olarak .NET SDK tarafından başvurulur ve genellikle projenizden başvurmanız gerekmez. Daha fazla bilgi için bkz. Https://aka.ms/sdkimplicitrefs

Bu nedenle, burada listelenen .Net Standard nuget için bağımlılıklar olarak listelenen tüm paketleri kaldırdım ve kaldırdım :

.NETStandard 1.1

  • Microsoft.NETCore.Platforms (> = 1.1.0)

  • System.Collections (> = 4.3.0)

  • System.Collections.Concurrent (> = 4.3.0)

  • System.Diagnostics.Debug (> => 4.3.0)

  • System.Diagnostics.Tools (> = 4.3.0)

  • System.Diagnostics.Tracing (> = 4.3.0)

  • System.Globalization (> = 4.3.0)

  • System.IO (> = 4.3.0)

  • System.IO.Compression (> = 4.3.0)

  • System.Linq (> = 4.3.0)

  • System.Linq.Expressions (> = 4.3.0)

  • System.Net.Http (> = 4.3.2)

  • System.Net.Primitives (> = 4.3.0)

  • System.ObjectModel (> = 4.3.0)

  • System.Reflection (> = 4.3.0)

  • System.Reflection.Extensions (> = 4.3.0)

  • System.Reflection.Primitives (> = 4.3.0)

  • System.Resources.ResourceManager (> = 4.3.0)

  • System.Runtime (> = 4.3.0)

  • System.Runtime.Extensions (> = 4.3.0)

  • System.Runtime.InteropServices (> = 4.3.0)

  • System.Runtime.InteropServices.RuntimeInformation (> => 4.3.0)

  • System.Runtime.Numerics (> = 4.3.0)

  • System.Text.Encoding (> = 4.3.0)

  • System.Text.Encoding.Extensions (> = 4.3.0)

  • System.Text.RegularExpressions (> = 4.3.0)

  • System.Threading (> = 4.3.0)

  • System.Threading.Tasks (> = 4.3.0)

  • System.Xml.ReaderWriter (> = 4.3.0)

  • System.Xml.XDocument (> = 4.3.0)

Ve sarı uyarılar ortadan kalktı.

Buradan: https://blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-net-standard-2-0/

Ayrıca, NoWarn özelliğini aşağıdaki gibi kullanabileceğinizi de buldum:

<ItemGroup>
  <PackageReference Include="Huitian.PowerCollections" Version="1.0.0" NoWarn="NU1701" />
</ItemGroup>

8

Sarı üçgen, paketin fiziksel dosyalarının kaybolduğu ve artık Sabit Sürücüde bulunmadığı anlamına gelir.

Bu genellikle get latest version, özellikle yeni bir makine kullanırken ve proje kodunuzu TFS sunucusundan almak istediğinizde, TFS'de kaynak denetimi için bir istek yayınlarken gerçekleşir.

low quality internet connectionNeredeyse her zaman veri kaybına veya indirilen dosyaların bozulmasına neden olmasından da kaynaklanabilir .

görüntü açıklamasını buraya girin

Sorun birkaç paket eksikse, packages.configdosyayı değiştirebilir ve bu paketleri packages.confignuget paket yöneticisi aracılığıyla bu paketleri kaldırabilir ve eksik paketleri yeniden yükleyebilirsiniz.

Ancak sorun birkaç paketten daha fazlası eksikse, eksik paketleri geri almak için kullandığım en iyi ve hızlı yol şudur:

  1. Yeni bir görsel stüdyo örneği açmak
  2. Eksik paketlerle aynı proje türüne sahip yeni bir proje çözümü oluşturun (Örnek: Bireysel Kullanıcı Hesabı ile ASP.Net MVC)
  3. Yeni projenin paketlerini, önceki proje çözümünün paket sürümleriyle eşleşecek şekilde en son ile güncelleyin
  4. Dosya gezginini açın ve oluşturduğunuz yeni çözümdeki paketler klasörüne gidin
  5. Tümünü Packagesseçerek klasörün tüm içeriğini kopyalayın , Not Paketler klasörünün kendisini yalnızca klasörün içindeki içeriği kopyalamayın
  6. Bunu önceki çözümünüzde (eksik paketlerle çözüm), Packagesmevcut öğelerin üzerine yazılan klasöre yapıştırın .
  7. Çözüm gezgininde paketler klasörünüze gidin ve onu genişletin, ardından eksik paketlerin çoğunun artık sarı üçgen olmadan gösterildiğini görmek için yenile düğmesini tıklayın.
  8. Son olarak, yeni bir çözüm oluşturduğunuzda varsayılan olarak dahil edilmeyen birkaç eksik paketle karşılaşacaksınız, bunları paketler.config dosyanızdan (nuget paket yöneticilerinin) yüklü paketleri belirlemek için okuduğu dosyadan kaldırmanız gerekir ve nuget paket yöneticisini kullanarak bunları yeni olarak yükleyin.

Not nedenle bu biri için kolay bir çözüm beklemeyin, projelerden dosyaları eksik ilgili bu tür sorunları çözmek için her zaman zor ve geliştirici deneyime bağlıdır.

Hatanın nedeni olarak, Microsoft bunun bir hata olduğunu söylüyor, ancak Visual Studio'nun herhangi bir sürümünde ortaya çıkabilir.


1
Projelerle ilgili olarak, Visual Studio (2019) 'u yeniden başlatmak benim için sorunu çözmüş gibi görünüyordu.
Steve Smith


7

Sadece bu sorunla yeni bir kişi için dokümantasyon amacıyla bunu deneyin ve beni hatırlayacaksınız: D

Araçlar> NuGet Yöneticisi> Yapılandırmalar'a giderseniz. ve "nuget'e izin ver ...." ve "otomatik olarak kontrol et ...." kontrolüne sahipsiniz.

Yapmanız gereken tek şey "Tüm NuGet Önbelleğini Temizle" düğmesine tıklamaktır.

İşte bu, manuel düşünceleri tehlikeli olabileceğinden daha fazla düzenlemenize gerek yok, inanın bana, burada çokça anlatılandan bazı adımları atmam ve resmi microsoft belgelerinin 5 adımından fazlasını denemem gerekiyor. bu sorunu buradan kontrol edebilirsiniz : https://docs.microsoft.com/es-es/nuget/consume-packages/package-restore#restore-packages-automatically-using-visual-studio

Ama sadece önbelleği temizlemek tüm sorunları çözer


Bu, yanıt zincirinin daha üst
sıralarında oylanmalıdır

7

Uyarı simgesine sahipseniz ancak hiçbir uyarı yoksa ve gerçekte hiçbir şey yanlış görünmüyorsa, projeye sağ tıklayın> Projeyi Kaldır> projeye tekrar sağ tıklayın> Projeyi Yeniden Yükle. Simge bir an için belirdi ve ardından Visual Studio 2019'da benim için temizlendi. Bu, Visual Studio'nun tam olarak yeniden başlatılmasını önler.


2

İşin garibi, .Net Core 3 projem , projenin bağlamından "Proje bağımlılıklarını yükle" ye tıklamamı gerektirdi , ardından uyarı simgesi kayboldu.

Yararlı ekran görüntüsü:

görüntü açıklamasını buraya girin


1

Visual stüdyosunu 16.4.4'e güncelledim ve sorun çözüldü. Referans sabittir ve artık sarı üçgen yok. Teşekkürler.


1

Projeyi klonladığımda bu hatayla karşılaştım. ana sebep Nuget paketlerinin geri yüklenememesi ve nuget.org'u sadece aktif kaynak yaparak bir çözüm bulmamdı.

görüntü açıklamasını buraya girin

Yalnızca aktif kaynak olarak Nuget.org'u seçtiğinizden emin olun.

Umarım yardımcı olur


1

Sarı ünlem işareti genellikle eksik referans veya desteklenmeyen dll'den kaynaklanır. Bir depoyu klonlarsanız, külçe paketlerinin çoğunun sarı ünlem işareti gösterme ihtimali vardır. Proje sürümünün doğru olduğunu doğruladıysanız ve hala sorun devam ediyorsa, aşağıdaki çözümü deneyebilirsiniz.

Paket yöneticisi konsolunda, bu sorunla karşılaştığınız projeyi seçin ve ardından aşağıdaki komutu yazın.

Update-Package -Reinstall

Bu, tüm paketleri yeniden yüklemeye zorlayacaktır. Bu komut NuGet paketlerinin sürümünü güncellemeyecek, yalnızca onları yeniden yüklemeye zorlayacaktır.

Bu çözüm benim durumumda çalıştı. VS2019 kullanıyorum. Umarım bu başkalarına da yardımcı olur.


0

Diğerlerinin yüklenmemesine neden olabilecek 1 paket olabilir. .csproj'daki paketleri birer birer yorumlamayı deneyin ve hangisinin sorun olduğunu bulup daraltın.


0

İşaretli yanıttaMicrosoft.NETCore.Platforms belirtildiği gibi kaldırmaya çalışırsam aşağıdaki hatayı alıyorum:

'Microsoft.NETCore.Platforms.1.1.0' kaldırılamıyor çünkü 'NETStandard.Library.2.0.3' buna bağlı.

Diğer paketleri kaldırdım ama yine de şu NETSDK1023hatayı alıyorum:

Projenize 'NETStandard.Library' için bir PackageReference dahil edildi. Bu pakete dolaylı olarak .NET SDK tarafından başvurulur ve genellikle projenizden başvurmanız gerekmez. Daha fazla bilgi için bkz. Https://aka.ms/sdkimplicitrefs

Şimdi .csproj'umu düzenledim ve aşağıdaki bölümü sildim

<PackageReference Include="NETStandard.Library" Version="2.0.3" />

Öneriler altında https://aka.ms/sdkimplicitrefs'de belirtildiği gibi :

.NET Core veya .NET Standard'ı hedeflerken , proje dosyanızdaki bir öğe aracılığıyla Microsoft.NETCore.Appveya NETStandard.Librarymeta paketlerine asla açık bir referans <PackageReference>vermeyin.

Şimdi uyarı gitti!


0

Yukarıdakilerin hiçbiri benim için işe yaramadı. Çözümde, VS'de çok sayıda kırmızı hataya neden olan çözümdeki diğer projelere olan bağımlılıklara ilişkin uyarı üçgenleri olan bir projem vardı. Ancak, iyi bir şekilde derler, çalışır ve hata ayıklama yapar. Sonunda çözüm ağacındaki proje adına sağ tıklayarak projeyi kaldırdım ve ardından projeyi yeniden yükledim ve şimdi her şey mutlu. Teşekkürler Visual Studio, smh. VS 2019 16.7.1 kullanıyorum


0

Makineyi Yeniden Başlat

Durumumun, bir önbellek temizlemesinden sonra bazı işlemlerin belirli dll'leri yayınlamaması ve ardından bu kilit (?) Nedeniyle herhangi bir dll ediniminin başarısız olması olduğuna inanıyorum.

Makinemi yeniden başlatıp bunu yaparak donet restoresorunu çözdüm ve eksik paket hatası olmadan yeniden oluşturabilirim.


-4

Bu sorunu çözebilecek tüm NuGet paketlerini güncellemenizde herhangi bir sorun yoksa.

Araçlar menüsü -> NuGet Paket Yöneticisi -> Çözüm için Nuget Paketlerini Yönetin . Bu menü göründüğünde, Güncelle sekmesine tıklayın ve Tümünü Güncelle düğmesine tıklayın.


5
Bu, tüm paketleri en son sürüme güncellemez mi? Bir veya daha fazla paketin belirli (en son olmayan) bir sürümü gerekliyse, bu istenmeyebilir.
Gertsen

Zaten en son paketleri kullanıyorsanız bu mükemmel bir çözümdür. Sorunumu hemen düzelttim.
n4rzul

1
Bu her zaman çözüm değildir. Bazen proje içinde güncellenmemesi gereken paketler vardır.
caras
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.