2011-06-21 30 views
14

Chciałbym usunąć cały pakiet Nuget i zainstalować go w moim projekcie ponownie.Pakiet Nuget Clean Remove/Install

Niestety, z jakiegoś powodu pomija usuwanie plików, które zostały "zmodyfikowane", a następnie pomija umieszczenie ich w projekcie podczas ponownej instalacji, ponieważ już istnieją.

Czy istnieje flaga, którą można ustawić, aby bezwarunkowo usunąć każdy pojedynczy ślad pakietu Nuget, alternatywnie zastąpić wszystkie istniejące pliki?

Dzięki.

Odpowiedz

11

Niestety w tej chwili NuGet nie robi, co chcesz. Podczas procesu deinstalacji NuGet usunie tylko pliki zawartości, jeśli nie zostały one zmodyfikowane. Jak już zauważyłeś, proces aktualizacji nie zaktualizuje również plików, które zostały zmodyfikowane.

Komenda Odinstaluj-pakiet ma opcję -Force, ale oznacza to "wymuszenie" dezinstalacji, nawet jeśli istnieją inne pakiety, które zależą od tego.

Możemy z pewnością zgłosić to jako problem i być może włączyć go do przyszłej wersji.

Inną opcją jest utworzenie skryptu PowerShell, który wyliczy zawartość pakietu, a następnie pozwoli usunąć wszystkie pliki zawartości. Zobaczę, czy jest prosty sposób na zrobienie tego.

BTW: Być może można znaleźć lepszy sposób na rozszerzenie istniejącego pliku zawartości, a nie modyfikowanie go bezpośrednio. Zwłaszcza, że ​​tracisz zmiany po aktualizacji pakietu.

+0

Mam również ten problem. Chodzi o to, że właściwie nie zmodyfikowałem żadnej zawartości pliku. Wszystko, co zrobiłem, to dodać pliki do repozytorium svn. Sądzę, że wszelkie atrybuty SVN dodane do pliku są również interpretowane jako modyfikacje. To sprawia, że ​​korzystanie z nugetu jest naprawdę niewygodne dla każdego, kto korzysta z systemu kontroli źródła. – Sean

+2

Czy ta odpowiedź zmieniła się w ciągu ostatnich 15 miesięcy? –

+0

@PatrickSzalapski tak - zobacz moją odpowiedź –

3

Wersja NuGet 1.6 ma funkcję usuwania pakietu! http://docs.nuget.org/docs/release-notes/nuget-1.6

jeśli aktualizacja rozszerzenia nie powiedzie się (signatur missmatch), po prostu odinstaluj i zainstaluj ponownie. jest to znany problem.

+4

Twoja cytowana strona nie odnosi się do 'usunięcia pakiet funkcji ". Czy możesz wyjaśnić, o czym mówi" znany problem "i jaki aspekt adresów wersji 1.6 i późniejszych - w tej chwili twoja odpowiedź, podczas gdy w dobrej intencji trudno jest odgadnąć przydatne informacje od –

6

Możesz teraz robić, co chcesz! (na końcu)

Najpierw musisz zaktualizować najnowszą wersję NuGet (myślę, że ta funkcja została dodana około kwietnia 2013). Zrób to przechodząc do Tools > Extensions and Updates i kliknij Updates, aby zaktualizować nuget.

Następnie parametr -FileConflictAction pozwoli na nadpisanie plików.

Install-Package Microsoft.jQuery.Unobtrusive.Validation -Version 2.0.30506.0 -FileConflictAction Overwrite 

(PowerShell Command Reference for Install-Package)

0

myślę, że to zdarzyło mi się kilka razy. Przejdź do pliku packages.config, który powinien być katalogiem głównym twojego projektu i usuń powstańca (w twoim przypadku wiersz z pakietem: SignalR). Dzięki temu NuGet powie, że pakiet nigdy nie był zainstalowany.

Teraz będziesz mógł zainstalować go ponownie w repozytorium, a następnie odinstalować, aby wszystko powróciło do stanu sprzed rozgrzewki. Nie jestem pewien, jak to się dzieje.

Powiązane problemy