Co oznaczają żółte trójkąty ostrzegawcze w zależnościach w programie Visual Studio 2017?


110

Właśnie przekonwertowałem moją bibliotekę PCL na nową bibliotekę .Net Standard i mam kilka żółtych trójkątów ostrzegawczych na moich zależnościach pokazanych poniżej:

wprowadź opis obrazu tutaj

Podczas konwersji przeniósł wszystkie pakiety nuget, w tym zależności, więc może być dulicates.

Jak mogę się dowiedzieć, co reprezentują żółte trójkąty ostrzegawcze?

EDYTOWAĆ

Dzienniki kompilacji:

Aby uniemożliwić NuGet przywracanie pakietów podczas kompilacji, otwórz okno dialogowe Opcje programu Visual Studio, kliknij węzeł Menedżera pakietów i odznacz pole „Zezwalaj NuGet na pobieranie brakujących pakietów podczas kompilacji”. NU1605: Wykryta zmiana wersji pakietu: NUnit z 3.8.1 na 2.6.4. Odwołaj się do pakietu bezpośrednio z projektu, aby wybrać inną wersję. MyProj.UI.Tests -> NUnit (> = 2.6.4) NU1605: Wykryto obniżenie wersji pakietu: NUnit z 3.8.1 do 2.6.4. Odwołaj się do pakietu bezpośrednio z projektu, aby wybrać inną wersję. MyProj.UI.Tests.iOS -> MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1) MyProj.UI.Tests.iOS -> NUnit (> = 2.6.4) NU1605: Wykryta zmiana wersji pakietu: NUnit z 3.8.1 na 2.6.4. Odwołaj się do pakietu bezpośrednio z projektu, aby wybrać inną wersję.
MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1)

MyProj.UI.Tests.Android -> MyProj.UI.Tests -> MyProj.Core.Tests -> NUnit (> = 3.8.1) MyProj.UI.Tests.Android -> NUnit (> = 2.6.4)


59
@Nkosi najechanie na nie nic nie pokazuje
user1

1
Następnie sprawdź okno błędów
Nkosi

3
Te odwołania są używane podczas budowania programu. Ale mają one również znaczenie dla środowiska IDE, muszą je rozwiązać, aby zapewnić technologię IntelliSense. Jeśli to zawiedzie, otrzymasz trójkąt ostrzegawczy. Użyj opcji Build> Build, aby wyświetlić komunikat o błędzie.
Hans Passant

34
Kiedy mi się to przydarzyło, nie było żadnych ostrzeżeń dotyczących kompilacji. Ikona ostrzeżenia właśnie utknęła w interfejsie użytkownika. Usunięcie i ponowne załadowanie projektu rozwiązało problem.
StackOverthrow

1
@TKK: Myślę, że trwa to tylko kilka minut, po czym w interfejsie użytkownika pojawiają się trójkąty ostrzegawcze. Przynajmniej tak mi się stało po ponownym otwarciu rozwiązania. Na początku myślałem, że to naprawiono, ale nagle pojawiły się ponownie trójkąty ostrzegawcze.
PussInBoots

Odpowiedzi:


78

Choć brzmi to banalnie, spróbuj odbudować, a następnie uruchom ponownie VS - i kontynuuj swój dzień :)


5
Dziękuję za przypomnienie klasycznego rozwiązania „spróbuj zrestartować” :). Spędziłem ostatnią godzinę na zastanawianiu się, dlaczego VS usuwa moje pakiety, kiedy budowałem rozwiązanie. Ponownie uruchomiłem VS i wszystko działało zgodnie z oczekiwaniami. / ugh
Ryan E.

1
Klasyczne „zamknięcie” nie zawsze jest rozwiązaniem wszelkiego zła świata: /
sgrysoft

Właśnie zaktualizowałem dzisiaj mój program Visual Studio 2019 o najnowszą wersję (16.5.1), aby być dokładnym. I problem nadal istnieje, ale to rozwiązanie nadal działa :)
Willy David Jr

Wyłącz i włącz ponownie :-D
Don Ch

63

biegać dotnet restore zanim wykonasz jakąkolwiek skomplikowaną manipulację, otrzymasz o wiele więcej informacji niż w oknie błędów lub eksploratorze rozwiązań.

Możesz uruchomić to polecenie w konsoli Menedżera pakietów:

Narzędzia> Menedżer pakietów NuGet> Konsola Menedżera pakietów


4
Samo ponowne otwarcie rozwiązania zamiast ponownego uruchomienia VS również zadziałało.
Quido

dlaczego miałbym wykonywać przywracanie dotnet? czy kompilacja nie musi tego robić?
pabrams

12

W dzienniku kompilacji zauważyłem to:

C: \ Program Files \ dotnet \ sdk \ 2.0.2 \ Sdks \ Microsoft.NET.Sdk \ build \ Microsoft.NET.Sdk.DefaultItems.targets (199,5): ostrzeżenie: PackageReference dla „NETStandard.Library” zostało zawarte w Twoim projekcie. Ten pakiet jest niejawnie przywoływany przez zestaw .NET SDK i zwykle nie ma potrzeby odwoływania się do niego z projektu. Aby uzyskać więcej informacji, zobacz https://aka.ms/sdkimplicitrefs

Dlatego poszedłem i odinstalowałem wszystkie pakiety, które były wymienione jako zależności dla .Net Standard nuget wymienionego tutaj:

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)

I żółte ostrzeżenia zniknęły.

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

Odkryłem również, że możesz użyć właściwości NoWarn, jak poniżej:

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

8

Żółty trójkąt oznacza, że ​​fizyczne pliki pakietu zniknęły i nie są już dostępne na dysku twardym.

Zwykle dzieje się tak, gdy wysyłasz get latest versionżądanie dotyczące kontroli źródła w TFS, szczególnie w przypadku korzystania z nowej maszyny i chcesz uzyskać kod projektu z serwera TFS.

Może to być również spowodowane, przez low quality internet connectionco prawie zawsze spowoduje utratę danych lub uszkodzenie pobranych plików.

wprowadź opis obrazu tutaj

Jeśli problemowi brakuje kilku pakietów, możesz zmodyfikować packages.configplik i usunąć te pakiety z packages.configi ponownie zainstalować brakujące pakiety za pośrednictwem menedżera pakietów NuGet.

Ale jeśli problem brakuje więcej niż kilku pakietów, najlepszym i szybkim sposobem na odzyskanie brakujących pakietów jest:

  1. Otwarcie nowej instancji Visual Studio
  2. Utwórz nowe rozwiązanie projektowe z tym samym typem projektu, jak to z brakującymi pakietami (przykład: ASP.Net MVC z indywidualnym kontem użytkownika)
  3. Zaktualizuj pakiety nowego projektu do najnowszej, aby dopasować wersje pakietów poprzedniego rozwiązania projektu
  4. Otwórz eksplorator plików i przejdź do folderu pakietów w nowym utworzonym rozwiązaniu
  5. Skopiuj całą zawartość folderu Packages, zaznaczając wszystko. Uwaga NIE kopiuj samego folderu Packages, tylko zawartość wewnątrz folderu
  6. Wklej to w poprzednim rozwiązaniu (rozwiązanie z brakującymi pakietami), w Packagesfolderze z nadpisaniem istniejących elementów.
  7. Przejdź do folderu pakietów w eksploratorze rozwiązań i rozwiń go, a następnie kliknij przycisk odświeżania, aby zobaczyć, że wiele brakujących pakietów jest teraz wyświetlanych bez żółtego trójkąta
  8. Na koniec otrzymasz kilka brakujących pakietów, które nie są domyślnie dołączane podczas tworzenia nowego rozwiązania, musisz je usunąć z pliku packages.config (plik odczytywany przez menedżerów pakietów nuget), aby określić zainstalowane pakiety, i zainstaluj je jako nowe za pomocą menedżera pakietów NuGet.

Zwróć uwagę, że takie problemy związane z brakującymi plikami z projektów są zawsze trudne do naprawienia i zależą od doświadczenia programisty, więc nie oczekuj łatwego rozwiązania tego problemu.

Microsoft twierdzi, że przyczyną błędu jest błąd, ale może się zdarzyć w dowolnej wersji programu Visual Studio.


1
Jeśli chodzi o projekty, ponowne uruchomienie Visual Studio (2019) wydawało się rozwiązać problem.
Steve Smith

nie ma packages.coinfig
pabrams

7

Tylko w celach dokumentacyjnych dla nowej osoby z tym problemem, spróbuj tego, a zapamiętasz mnie: D

Jeśli przejdziesz do: Narzędzia> Administrator NuGet> Konfiguracje. i masz zaznaczone „Zezwalaj na nuget…” i „Automatycznie sprawdzaj…”.

Jedyne, co musisz zrobić, to kliknąć przycisk „Wyczyść wszystkie pamięci podręczne NuGet”

To wszystko, nie musisz edytować ręcznych myśli, które mogą być niebezpieczne, uwierz mi, używam niektórych kroków, niż opisuję tutaj, dużo czasu i próbuję więcej niż 5 kroków oficjalnej dokumentacji Microsoft dla ten problem możesz sprawdzić tutaj: https://docs.microsoft.com/es-es/nuget/consume-packages/package-restore#restore-packages-automatically-using-visual-studio

Ale samo wyczyszczenie pamięci podręcznej rozwiązuje wszystkie problemy


To powinno zostać przegłosowane w dalszej części łańcucha odpowiedzi ..
GregD

7

Jeśli masz ikonę ostrzeżenia, ale nie ma żadnych ostrzeżeń i nic nie wydaje się być błędne, kliknij projekt prawym przyciskiem myszy> Wyładuj projekt> ponownie kliknij prawym przyciskiem myszy projekt> Wczytaj ponownie projekt. Ikona pojawiła się na chwilę, a następnie została wyczyszczona dla mnie w programie Visual Studio 2019. Pozwala to uniknąć pełnego ponownego uruchomienia programu Visual Studio.


2

Co dziwne, mój projekt .Net Core 3 wymagał ode mnie kliknięcia „Załaduj zależności projektu” w kontekście projektu, po czym ikona ostrzeżenia zniknęła.

Pomocny zrzut ekranu:

wprowadź opis obrazu tutaj


1

Właśnie zaktualizowałem Visual Studio do wersji 16.4.4 i problem został rozwiązany. Odniesienie jest stałe i nie ma już żółtego trójkąta. Dzięki.


1

Napotkałem ten błąd podczas klonowania projektu. głównym powodem było to, że pakiety Nuget nie mogły zostać przywrócone i znalazłem rozwiązanie, ustawiając nuget.org jako jedyny aktywny zasób.

wprowadź opis obrazu tutaj

Upewnij się, że wybrałeś Nuget.org jako jedyny aktywny zasób.

Mam nadzieję, że to pomoże


1

Żółty wykrzyknik jest zwykle spowodowany brakiem odniesienia lub nieobsługiwaną biblioteką dll. Jeśli sklonujesz repozytorium, istnieje prawdopodobieństwo, że wiele pakietów modeli użytkowych wyświetli żółty wykrzyknik. Jeśli sprawdziłeś, że wersja projektu jest poprawna, a problem nadal istnieje, możesz wypróbować poniższe rozwiązanie.

W konsoli menedżera pakietów wybierz projekt, w którym napotykasz ten problem, a następnie wpisz następujące polecenie.

Update-Package -Reinstall

Wymusi to ponowną instalację wszystkich pakietów. To polecenie nie zaktualizuje wersji pakietów NuGet, po prostu wymusi ich ponowne zainstalowanie.

To rozwiązanie zadziałało w moim przypadku. Używam VS2019. Mam nadzieję, że pomoże to również innym.


0

Może istnieć 1 pakiet, który może spowodować, że wszystkie inne nie zostaną załadowane. spróbuj komentować pakiety z .csproj jeden po drugim i dowiedz się, który z nich jest problemem, aby zawęzić zakres.


0

Jeśli spróbuję odinstalować Microsoft.NETCore.Platformszgodnie z zaznaczoną odpowiedzią, pojawi się następujący błąd:

Nie można odinstalować „Microsoft.NETCore.Platforms.1.1.0”, ponieważ „NETStandard.Library.2.0.3” zależy od niego.

Odinstalowałem inne pakiety, ale nadal pojawia się NETSDK1023błąd:

W projekcie uwzględniono PackageReference dla „NETStandard.Library”. Ten pakiet jest niejawnie przywoływany przez zestaw .NET SDK i zwykle nie ma potrzeby odwoływania się do niego z projektu. Aby uzyskać więcej informacji, zobacz https://aka.ms/sdkimplicitrefs

Teraz zredagowałem plik .csproj i usunąłem następną część

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

jak podano w https://aka.ms/sdkimplicitrefs w sekcji Zalecenia :

W przypadku platformy .NET Core lub .NET Standard nigdy nie należy jawnie odwoływać się do Microsoft.NETCore.Applub NETStandard.Librarymetapakietów za pośrednictwem <PackageReference>elementu w pliku projektu.

Teraz ostrzeżenie zniknęło!


0

Żadne z powyższych nie działało dla mnie. Miałem jeden projekt w rozwiązaniu z trójkątami ostrzegawczymi dotyczącymi zależności od innych projektów w rozwiązaniu, co powodowało wiele czerwonych błędów w VS. Jednak będzie dobrze budować, uruchamiać i debugować. Ostatecznie wyładowałem projekt, klikając prawym przyciskiem myszy nazwę projektu w drzewie rozwiązań, a następnie ponownie załadowałem projekt i wszystko jest teraz szczęśliwe. Dzięki Visual Studio, smh. Używam VS 2019 16.7.1


0

Uruchom ponownie maszynę

Uważam, że moja sytuacja polegała na tym, że jakiś proces nie zwalniał pewnych bibliotek dll po opróżnieniu pamięci podręcznej, a następnie jakiekolwiek przejęcie bibliotek dll nie powiodło się z powodu blokady (?).

donet restorePonowne uruchomienie komputera i rozwiązanie tego problemu pozwoliło mi ponownie zbudować bez błędu brakującego pakietu.


-4

Jeśli nie ma problemu z aktualizacją wszystkich pakietów NuGet, które mogą rozwiązać ten problem.

Menu Narzędzia -> Menedżer pakietów NuGet -> Zarządzaj pakietami NuGet dla rozwiązania . Kiedy pojawi się to menu, kliknij kartę Aktualizuj i kliknij przycisk Aktualizuj wszystko .


5
Czy nie zaktualizowałoby to wszystkich pakietów do najnowszej wersji? Może to nie być pożądane, jeśli wymagana jest konkretna (nie najnowsza) wersja jednego lub więcej pakietów.
Gertsen

Jeśli korzystasz już z najnowszych pakietów, jest to doskonałe rozwiązanie. Naprawiłem mój problem od razu.
n4rzul

1
Nie zawsze jest to rozwiązanie. Czasami w projekcie znajdują się pakiety, których nie należy aktualizować.
caras
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.