2013-09-05 21 views
29

Skonfigurowałem swój projekt z Visual Studio Express 2012, dodano trochę kodu C# i pomyślnie skompilowałem/wdrożono emulator. W pewnym momencie zdecydowałem, że chcę coś zrobić z JSON-em i stwierdziłem, że powinienem użyć framework Json.NET, który jest available as a NuGet package. Dodałem tę strukturę pomyślnie, używając komendy Install-Package Newtonsoft.Json.Nie można odinstalować/ponownie zainstalować pakietu NuGet

Próbowałem zainstalować aktualizację, którą MSVC oferował dwa dni temu, a instalacja nie powiodła się, co uniemożliwiło ponowne otwarcie mojego projektu. Ponowna instalacja MSVC nie pomogła, więc zakończyłem przywracanie systemu Windows do poprzedniego stanu. Udało mi się ponownie otworzyć projekt i chciałem ponownie zainstalować pakiet NuGet (nie wiedząc, że jest zainstalowany wewnątrz projektu, , a nie MSVC). Dało mi to błędy podczas instalacji, więc starałem się odinstalować wszystko z konsoli pakietów.

Krótko mówiąc:

  • Nuget konsola Pakiet mówi "nie zainstalowano żadnych pakietów", gdy Get-Package
  • Running Install-Package Newtonsoft.Json znowu daje mi błąd

    Newtonsoft.Json 5.0.6 Nie można zainstalować . Podczas próby zainstalowania tego pakietu w bazowaniu projektu „WindowsPhone, Version = V8.0”, pakiet jednak nie zawiera zestawów kompatybilnych z tych ram

  • W „Zarządzanie Nuget” Pakiety pokazy dialogowych żadnych pakietów pod Pakiet "json" jest wymieniony i oznaczony jako zainstalowany (więc nie mogę go zainstalować).

Teraz jestem kompletnie zagubiony. Nie wiem, jak poprawnie zainstalować pakiet, ani jak go poprawnie usunąć. Czy mój plik projektu jest uszkodzony? Jak mogę to naprawić?


[edytuj] Teraz staje się jeszcze bardziej skomplikowane. Właśnie zaktualizowałem menedżera pakietów NuGet (nie MSVC) i próbowałem ponownie zainstalować Json.NET.

  • W oknie dialogowym nadal nie jest pokazany w sekcji „zainstalowany”
  • w pakietach internetowych listy to nie więcej jest oznaczony jako zainstalowany, ale przycisk „Install” właśnie robi nic
  • Get-Package w konsola przedstawia pakiet jako zainstalowany

    PM> Get-Package 
    
    Id        Version    Description/Release Notes                                                
    --        -------    -------------------------                                                
    Newtonsoft.Json    5.0.6    Json.NET is a popular high-performance JSON framework for .NET 
    
  • Próba odinstalowania z `Uninstall-Package Newtonsoft.Json "daje" niutonów pakietu” oft.Json”nie można odnaleźć”

  • W moim folderze projektu widzę «Newtonsoft.Json.5.0.6» podfolder w folderze packages

Czy mogę po prostu zacząć od zera i stworzyć nowy projekt? :/


Zawartość opakowania.dgml:

<?xml version="1.0" encoding="utf-8"?> 
<DirectedGraph GraphDirection="LeftToRight" xmlns="http://schemas.microsoft.com/vs/2009/dgml"> 
    <Nodes /> 
    <Links /> 
    <Categories> 
    <Category Id="Projekt" /> 
    <Category Id="Paket" /> 
    </Categories> 
    <Styles> 
    <Style TargetType="Node" GroupLabel="Projekt" ValueLabel="True"> 
     <Condition Expression="HasCategory('Projekt')" /> 
     <Setter Property="Background" Value="Blue" /> 
    </Style> 
    </Styles> 
</DirectedGraph> 
+2

Można spróbować otworzyć 'packages.config' i usunąć' wpis Newtonsoft.Json' - to powinno rozwiązać twój trzeci punktor. Wtedy * może * będziesz mógł ponownie zainstalować go z okna NuGet Package Manager. Twój drugi punkt wypunktowania sprawia, że ​​wątpię w to ... –

+0

Czy korzystałeś wcześniej z Menedżera pakietów? a teraz zainstalowałeś NuGet? Możesz spróbować wejść do menedżera pakietów i odinstalować stamtąd. (Narzędzia -> Menedżer pakietów bibliotecznych) – paqogomez

+0

Jak wspomniano powyżej, nie mogę odinstalować stamtąd, ponieważ nie jest on wymieniony jako zainstalowany. Zabawne: Właśnie stworzyłem prosty nowy projekt, dodałem pakiet za pośrednictwem NuGet, a teraz mam również plik packages.config w folderze projektu, ale bez pakietu Packages.dgml. Myślę, że zacznę od tego czasu. Wciąż dziękuję za pomoc. – user826955

Odpowiedz

35

W rozwiązaniu lub projekcie znajdziesz plik o nazwie packages.config. Otwórz ten plik, a zobaczysz wszystkie pakiety, które zainstalował NuGet.

Plik będzie wyglądać mniej więcej tak:

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="Json" version="2.0.3" targetFramework="net45" /> 
</packages> 

Wystarczy usunąć linię swojego pakietu i zapisz plik.

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

Następnie uruchom ponownie NuGet i powinien zainstalować.

Pakiet JSON.NET NuGet powinien tylko work with a Windows Phone 8.0 project. Dodanie go do VS2012 Menedżer NuGet ściąga wersję JSON.NET w wersji WP7. (pakiety \ Newtonsoft.Json.4.5.10 \ lib \ sl3-wp \ Newtonsoft.Json.dll)

JSON.NET jest teraz dostępny również jako Portable Class Library, który można spożywać z WP8 (dostępny w NuGet lub w formie źródłowej).

AKTUALIZACJA:

Najnowsza wersja NuGet posiada deinstalację.

VS 2013: W rozwiązaniu kliknij prawym przyciskiem myszy References i Zarządzaj pakietami NuGet, w lewym górnym rogu znajdziesz "Zainstalowane pakiety". Wybierz pakiet i dostępna będzie opcja odinstalowania.

VS 2015: W rozwiązaniu kliknij prawym przyciskiem myszy References i Zarządzaj pakietami NuGet, znajdź zakładkę "Installed" w prawym górnym rogu. Najedź na pakiet i pojawi się "X", aby go odinstalować.

VS 2017: W sprawie rozwiązania, kliknij prawym przyciskiem myszy i "Zarządzaj pakietami NuGet dla rozwiązania", znajdź zakładkę "Zainstalowane" w lewym górnym rogu. Kliknij na pakiet, aw prawym panelu pojawi się przycisk "Odinstaluj".

+1

Nie mogę znaleźć pliku o nazwie packages.config. Explorer nie znajduje tego pliku w moim katalogu projektu. Masz na myśli 'Packages.dgml' w katalogu głównym mojego projektu? Nie zawiera wspomnianego XML. – user826955

+0

To musi być plik. [DGML jest zwykle oglądany graficznie] (http://docs.nuget.org/docs/workflows/package-visualizer), ale [podstawową informacją jest XML] (http://en.wikipedia.org/wiki/DGML) . Czy jesteś w stanie dostać się do widoku XML? – paqogomez

+0

Proszę zobaczyć moje zmiany w oryginalnym wpisie – user826955

1

Jest to rzeczywiście nieco mylące, ale dostępne są różne opcje, jeśli klikniesz prawym przyciskiem myszy rozwiązanie i wybierzesz zarządzanie pakietami nuget. Powinieneś być w stanie odinstalować stamtąd.

Należy sprawdzić odpowiedź tutaj: Windows Phone 8 JSON, aby uzyskać więcej informacji na temat Json.net i WP8.

23

Miałem ten sam problem. Nie mogłem ponownie zainstalować mojego pakietu nawet po wszystkich modyfikacjach pakietu.config. Tutaj, co działa dla mnie.

W folderze rozwiązania powinien znajdować się katalog "packages". Otwórz ten katalog i usuń katalog powiązany z twoim pakietem.

Gotowe.

+0

Dziękujemy! To działało dla mnie. –

+0

Jesteś prawdziwym ninja. – Aarmora

+0

To działało również dla mnie! Dzięki – gryzlaw

6

Po prostu usiadłem cztery godziny na moim nowym komputerze z systemem Windows 10 i nie mogłem się domyślić, dlaczego w Visual Studio 2015 nie działały żadne odwołania i dlaczego nie mogłem przywrócić pakietów NuGet. Z jakiegoś powodu TFS dodaje dwa pakiety foldery:

Lokalizacje:

C: \ Users \ YourUser \ Documents \ Visual Studio 2015 \ Projects \ YourProject \ pakietów

C: \ Users \ YourUser \ .nuget \ packages

Po usunięciu obu folderów pakietu mogłem przywrócić pakiety NuGet i wszystko działało od nowa.

0

próbowałem tego rozwiązania i jego dzieła

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> 
    <PropertyGroup> 
    <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> 
    </PropertyGroup> 
    <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" /> 
</Target> 
0

Miałem podobny problem w VS2017 (świeża instalacja). Pracowałem ze starszym projektem próbującym zainstalować stosunkowo nowy pakiet. Kiedy chciałbym zainstalować pakiet z GUI, błysnął przez sekundę, a potem nic nie zrobił.

Problem polegał na tym, że mój projekt miał niższy cel .NET niż pakiet. (Moje rozwiązanie było ukierunkowane na 4.5, a pakiet na 4.6). Zmiana miejsca docelowego .NET na nowszą wersję w mojej konfiguracji projektu i przebudowanie naprawiła problem.

Ten problem można zaobserwować, uruchamiając następujące polecenia: (Nazwy zmieniło)

PM> Install-Package Package.NET 

Attempting to gather dependency information for package 'Package.NET.1.0.0' with respect to project 'MyProject', targeting '.NETFramework,Version=v4.5' 
Gathering dependency information took 0.19 ms 
Attempting to resolve dependencies for package 'Package.NET.1.0.0' with DependencyBehavior 'Lowest' 
Resolving dependency information took 0 ms 
Resolving actions to install package 'Package.NET.1.0.0' 
Resolved actions to install package 'Package.NET.1.0.0' 
Retrieving package 'Package.NET.1.0.0' from 'nuget.org'. 
Install failed. Rolling back... 
Package 'Package.NET.1.0.0' does not exist in project 'MyProject' 
Package 'Package.NET.1.0.0' does not exist in folder 'C:\Code\MyProject\packages' 
Executing nuget actions took 13.92 ms 
Install-Package : Could not install package 'Package.NET.1.0.0'. You are trying to install this package into a project that targets '.NETFramework,Version=v4.5', 
but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author. 
At line:1 char:1 
+ Install-Package Package.NET 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [Install-Package], Exception 
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand 
Powiązane problemy