Mam aplikację ASP.NET MVC5, która działała wczoraj i teraz otrzymuję ten błąd, gdy próbuję zbudować:
Ten projekt odwołuje się do pakietów NuGet, których brakuje na tym komputerze.
Mam zaznaczone dwie opcje, które pozwalają nugetowi automatycznie pobierać i instalować brakujące pakiety zaznaczone / włączone. Próbowałem też usunąć wszystkie pliki z folderu pakietów, a następnie nuget ponownie je pobrał. Również gdy otwieram nuget i szukam aktualizacji, mówi, że nie ma żadnych, które trzeba zainstalować. Nie mogę wymyślić, co jeszcze zrobić, aby wyjść poza ten niezwykle irytujący problem.
visual-studio-2010
visual-studio
msbuild
nuget
Austin Harris
źródło
źródło
The operation has timed out.
błąd. podczas kompilacji. Musisz sprawdzić dziennik kompilacji lub kartę Diagnostyka na ekranie informacji o kompilacji programu Visual Studio Online nie powiodło się.Odpowiedzi:
W moim przypadku musiałem usunąć z pliku .csproj:
W rzeczywistości w tym fragmencie możesz zobaczyć, skąd pochodzi komunikat o błędzie.
Byłem konwersji z MSBuild-Zintegrowanego Pakietu przywracania do automatycznej Pakietu Restore ( http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore )
źródło
Jednym rozwiązaniem byłoby usunięcie z pliku .csproj następujących elementów:
W jaki sposób?
źródło
W moim przypadku stało się to po tym, jak przeniosłem folder rozwiązania z jednej lokalizacji do drugiej, trochę go ponownie uporządkowałem, a proces jego względnej struktury zmienił się.
Musiałem więc edytować wszystkie wpisy podobne do następującego w moim
.csproj
pliku zdo
(Zwróć uwagę na zmianę z
..\packages\
napackages\
. W twoim przypadku może to być inna struktura względna, ale masz pomysł.)źródło
.csproj
krewnego względem ciebie.sln
nie ma znaczenia w tym kontekście. Liczy się to, czy cokolwiek, do czego się odwołujesz,.csproj
zostało przeniesione gdzie indziej. Jeśli tak, musisz to naprawić. Jeśli przeniosłeś swój „.csproj” z nienaruszonym wszystkim, do czego się odwołuje, ale zachowałeś.sln
go tam, gdzie był, będziesz musiał naprawić.sln
plik w nowej lokalizacji.csproj
-es, ale nie będzie potrzeby edycji.csproj
plików.I łatwo rozwiązać ten problem poprzez kliknięcie prawym przyciskiem myszy na moim roztwór, a następnie klikając na przycisk Włącz Nuget Pakiet Restore opcję
(PS: Upewnij się, że masz Nuget Install From Tools -> Extensions and Update -> Nuget Package Manager for Visual Studio 2013. Jeśli nie zainstalujesz tego rozszerzenia w pierwszej kolejności)
Mam nadzieję, że to pomoże.
źródło
MSBuild-Integrated Package Restore
. To stary sposób i podaje kilka powodów, dla których powinieneś używać nowego sposobu.W moim przypadku miało to związek z wersją Microsoft.Build.Bcl. Moja wersja pakietu nuget to 1.0.21, ale moje pliki projektów wciąż wskazywały na wersję 1.0.14
Więc zmieniłem moje pliki .csproj z:
do:
Kompilacja znów działała.
źródło
Jeśli używasz TFS
Usuń pliki
NuGet.exe
iNuGet.targets
z.nuget
folderu rozwiązania . Upewnij się, że same pliki również zostały usunięte z obszaru roboczego rozwiązania. ZachowajNuGet.Config
plik, aby kontynuować pomijanie dodawania pakietów do kontroli źródła.Edytuj każdy plik projektu (np. .Csproj, .vbproj) w rozwiązaniu i usuń wszelkie odniesienia do
NuGet.targets
pliku. Otwórz pliki projektu w wybranym edytorze i usuń następujące ustawienia:Jeśli nie korzystasz z TFS
Usuń
.nuget
folder ze swojego rozwiązania. Upewnij się, że sam folder jest również usunięty z obszaru roboczego rozwiązania.Edytuj każdy plik projektu (np. .Csproj, .vbproj) w rozwiązaniu i usuń wszelkie odniesienia do
NuGet.targets
pliku. Otwórz pliki projektu w wybranym edytorze i usuń następujące ustawienia:Odniesienie: Migracja rozwiązań zintegrowanych z MSBuild w celu użycia automatycznego przywracania pakietów
źródło
Czy to możliwe, że pakiety zostały przywrócone do niewłaściwego folderu? Sprawdź, czy ścieżki w plikach csproj są prawidłowe.
Jeśli są różne, może to być spowodowane przywróceniem pakietów do innej lokalizacji. Może to być spowodowane sprawdzaniem pliku NuGet.Config podczas określania takiego węzła:
Pakiety są przywracane, ponieważ projekty wciąż patrzą na starą lokalizację.
źródło
Miałem ten sam problem. W moim przypadku zainstalowanie pakietu Microsoft.Bcl.Build rozwiązało problem.
źródło
1.0.21
wersji brak plików w pakiecie, instalacja1.0.14
wersji naprawiła to.Usunięto poniższe wiersze w pliku .csproj
źródło
Jednym rozwiązaniem byłoby usunięcie z pliku .csproj następujących elementów:
Ten projekt odwołuje się do pakietów NuGet, których brakuje na tym komputerze. Włącz Przywracanie pakietu NuGet, aby je pobrać. Aby uzyskać więcej informacji, zobacz http://go.microsoft.com/fwlink/?LinkID=322105 . Brakującym plikiem jest {0}.
źródło
Oto kroki, które zastosowałem, aby rozwiązać problem:
Aby dodać pakiety nuget do swojego rozwiązania:
źródło
Dla mnie zadziałało, ponieważ właśnie skopiowałem folder .nuget z działającego rozwiązania do istniejącego i przywołałem jego zawartość!
źródło
Pierwszą rzeczą do spróbowania jest kliknięcie rozwiązania prawym przyciskiem myszy i wybranie „Przywróć pakiety Nuget”.
W moim przypadku to nie działało, więc postępowałem zgodnie z zaleceniami dotyczącymi usuwania plików „Importuj” i „Cel” z pliku projektu, działało to dla 2 z 3 moich projektów, ale w przypadku ostatniego wystąpił inny błąd.
Udało się otworzyć konsolę Menedżera pakietów i uruchomić:
Zajmuje to trochę czasu, ale ponieważ ponowna instalacja wszystkich pakietów twój projekt skompiluje się bez problemów
źródło
Mam ten sam problem. Zetknąłem się z nim, gdy skopiowałem istniejący projekt i przeniosłem go do folderu z katalogu rozwiązania i dodałem jako istniejący projekt do mojego pustego rozwiązania. Więc muszę edytować mój plik csproj i szukać tego konkretnego wiersza kodu, przez większość czasu można go znaleźć w ostatnich wierszach:
Po tym wierszu muszę to skomentować:
Twoje rozwiązanie wyświetli monit o zmianę w projekcie, po prostu wybierz Przeładuj wszystko:
Potem wszystko działa dobrze po przebudowaniu mojego rozwiązania.
źródło
Miałem ten sam problem, gdy odwołuję się do biblioteki Class w mojej aplikacji internetowej MVC,
problemem było niedopasowanie numeru wersji pakietu nuget między dwoma projektami.
np .: moja biblioteka klas miała log4net 1.2.3, ale moja aplikacja webowa miała 1.2.6
poprawka: upewnij się, że oba projekty mają ten sam numer wersji, do którego się odwołuje.
źródło
Edycja .sln i .csproj nie zawsze jest łatwa lub pożądana. Gdy pojawi się lista błędów, możesz zobaczyć, które projekty zawierają brakujące pakiety (węzeł Referencje zwykle wskazuje, że brakuje brakujących zestawów, chyba że pakiety to kod źródłowy, zasoby, obrazy lub tylko tekstowe).
Usuwanie, a następnie dodawanie pakietów nie jest dobrym pomysłem, chyba że używasz najnowszej wersji pakietu. W przeciwnym razie przygotuj się na niespodzianki, nie zawsze przyjemne.
Jeśli, powiedzmy, pakiet to EntityFramework, to z galerii NuGet otrzymujesz najnowszą wersję, która w momencie pisania tego komentarza to 6.1.3 .
Być może najbezpieczniejszym sposobem radzenia sobie z sytuacją jest przywracanie brakujących pakietów jeden po drugim. Tak, trochę bolesne ćwiczenie, ale ściganie subtelnych błędów z powodu innej wersji pakietu może być znacznie bardziej nieprzyjemne.
Powiedziawszy to i niech EntityFramework będzie brakującym pakietem, możesz wydać następujące polecenie w konsoli Menedżera pakietów:
Spowoduje to zainstalowanie poprawnej wersji, czyli 6.0.1 , czyli tej, która jest określona w pakietach.config:
źródło
Miałem to, gdy pliki csproj i sln były w tym samym folderze (głupie, wiem). Kiedyś przeniosłem się do pliku SLN do folderu powyżej folderu csproj mój tak
źródło
Utworzyłem folder o nazwie „.nuget” w folderze głównym rozwiązania, a następnie dodałem plik „NuGet.Config” w tym folderze o następującej treści
Następnie utworzono plik „.nuGet.targets” jak poniżej $ (MSBuildProjectDirectory) .. \
źródło