Mam aplikację dotnet core, która jest przeznaczona dla Microsoft.NETCore.App 1.1.2. Utworzyłem projekt testowy, aby przetestować go w tym projekcie, ale podczas budowania zauważyłem to ostrzeżenie:
Otwieram Menedżera pakietów NuGet i widzę, że ostrzeżenie jest poprawne, testowany projekt ma inną wersję Microsoft.NETCore.App:
Mój problem polega na tym, że program Visual Studio nie pozwala mi zaktualizować tej wersji, więc nie wiem, jak rozwiązać ten problem: najlepiej byłoby po prostu kliknąć menu i wybrać odpowiednią wersję, ale program Visual Studio twierdzi, że nie może tego zrobić z powodu „ dodatkowe ograniczenia w projekcie lub packages.config ”. Jak mam zaktualizować ten pakiet? Do jakich „dodatkowych ograniczeń” odnosi się program Visual Studio?
źródło
Odpowiedzi:
EDYCJA 2018 : Postępuj zgodnie z instrukcjami aktualizacji pakietu tylko wtedy, gdy naprawdę wiesz, co robisz. W większości przypadków nie ma potrzeby ręcznej aktualizacji tego pakietu - ani innych pakietów oznaczonych jako „zablokowane przez projekt”. Aplikacja zależna od struktury będzie używać najnowszego dostępnego środowiska uruchomieniowego, a samodzielna aplikacja automatycznie wykona dodatkową kompilację przy użyciu nowszej wersji tego pakietu. (są pewne skrajne przypadki, w których musisz zaktualizować ten pakiet w projektach testowych. w takim przypadku dodaj
<TargetLatestRuntimePatch>true</…>
i zobacz te pytania i odpowiedzi, aby uzyskać inne opcje)Microsoft.NET.Sdk
Niejawny pakiet odwołuje się do tego, że nie można zaktualizować za pośrednictwem NuGet.W przypadku migracji z project.json projekt z
1.1.0
odwołaniem prawdopodobnie zawiera plikw pliku csproj lub podobnym elemencie (jeśli wcześniej korzystałeś z menedżera pakietów do ustawienia wersji):
Usuń wpisy, takie jak powyższe, a wszystkie pakiety będą się odnosić
1.1.2
(lub cokolwiek, co zainstalowany SDK uważa za najnowszy) automatycznie. Alternatywnie ustawianeRuntimeFrameworkVersion
we wszystkich projektach.źródło
<RuntimeFrameworkVersion>1.1.0</RuntimeFrameworkVersion>
linię. VS nadal nie pozwala mi ręcznie zmienić wersji, ale przynajmniej jest to właściwa wersja teraz (zaktualizowana do 1.1.2, tak jak powiedziałeś)Miałem podobny problem podczas próby zainstalowania pakietu Entityframework.Core w aplikacji internetowej .NET Core 2. Aby rozwiązać ten problem, wymusiłem instalację za pomocą konsoli Menedżera pakietów:
(2.0.5 była wówczas najnowszą wersją)
Mam nadzieję, że to przydatne. Pokój.
źródło
Dla mnie dodanie
załatwił sprawę
źródło
Krótka odpowiedź
Dodaj jawną wersję do
Microsoft.AspNetCore.App
odwołania do pakietu w pliku .csproj.Długa odpowiedź
Miałem zupełnie nowy projekt netcoreapp2.1. W pliku .csproj znajdowały się następujące informacje. Uwaga: z
Microsoft.AspNetCore.App
odwołaniem do pakietu nie jest powiązana żadna wersja .Dodałem jawne odniesienie do
Microsoft.Extensions.Logging.Abstractions
pakietu, aby rozwiązać niezgodność zależności (błąd kompilacji).Micorsoft.AspNetCore.App
chciał mieć wersję 2.1.0 tej zależności, ale inny pakiet chciał mieć wersję 2.1.1. Mój plik .csproj wyglądał teraz tak.Zmniejszyło to błąd kompilacji do ostrzeżenia o
Micorsoft.AspNetCore.App
wymaganiu wersji 2.1.0Microsoft.Extensions.Logging.Abstractions
pakietu, ale wersja 2.1.1 została oczywiście rozwiązana.Próba aktualizacji
Micorsoft.AspNetCore.App
do wersji 2.1.1 w celu naprawienia ostrzeżenia została zablokowana przez Menedżera pakietów, jak wspomniano w OP.Zaktualizowałem
Micorsoft.AspNetCore.App
odniesienie do pakietu, aby jawnie używać wersji 2.1.1 w ten sposób.Naprawiło to ostrzeżenie o kompilacji i odblokowało wszystkie wersje
Microsoft.AspNetCore.App
w Menedżerze pakietów. Udało mi się nawet usunąć wyraźne odniesienie doMicrosoft.Extensions.Logging.Abstractions
bez ponownego wprowadzania pierwotnego błędu. Ostateczny plik .csproj wyglądał tak bez żadnych problemów.źródło
Miałem ten sam problem i myślę, że problem dotyczy opakowania.
Problem został rozwiązany po dokładnym wskazaniu wersji.
Jak wiem, ten błąd wystąpił przy numerze wersji
źródło
Inne możliwe rozwiązanie. W
csproj
pliku zaktualizuj platformę docelową do wersji, do której chcesz przeprowadzić uaktualnienie. Po wprowadzeniu zmiany, zgodnie z poniższymi fragmentami, pakiety można uaktualnić za pośrednictwem menedżera pakietów NuGet rozwiązania.Przed:
Po:
źródło
Rozwiązałem to po prostu: Klikając prawym przyciskiem myszy Projekt (lub ALT + Enter) -> Właściwości -> Aplikacja -> Platforma docelowa (Wybierz platformę .NET Core (w tym przypadku 1.1))
źródło
Najlepszym zaleceniem jest ponowne utworzenie projektów po uaktualnieniu zestawu SDK i czasu wykonywania, a następnie upuszczenie starego kodu i konfiguracji w nowych projektach. Poza tym będziesz spędzać zbyt dużo czasu na bezużytecznych poprawkach i nieznanych konfiguracjach.
źródło