2016-06-28 11 views
68

I po instruction do stworzenia nowego projektu NET rdzenia i prowadził ten z cmd:Co to jest project.lock.json?

dotnet new 
dotnet restore 

Druga instrukcja tworzy project.lock.json który zawiera dużo śmieci (naprawdę nie śmieci, ale ton zależności, konfiguracje itp) . Zakładam, że te zależności to framework .NET, który jest podzielony na osobne pakiety NuGet.

Moje pytania:

  1. Czy moje założenie jest poprawne?
  2. Czy mogę zmniejszyć obciążenie aplikacji, usuwając niepotrzebne pakiety/zależności NuGet?
  3. Jak?
+2

Dlaczego to jest głosowanie? Wierzę, że NuGet jest wymagany do podstawowych aplikacji .net. W przeciwnym razie możesz sklonować pakiety lokalnie i podać własny kanał. – roydukkey

+0

Zazwyczaj nie należy dotykać pliku blokady. Zmodyfikujesz sam plik project.json, a plik blokady zaktualizuje się po uruchomieniu narzędzi. – gretro

+2

Twoje pytanie nr 2 jest dobre i na własne pytanie zasługuje na moje zdanie. –

Odpowiedz

88

Krótka odpowiedź:project.lock.json są generowane przez oprzyrządowania .NET podczas przywracania pakietów projektu. Nie należy jej dotykać ani sprawdzać w kontroli źródła. Bezpośrednio edytuj project.json.

Dłuższa odpowiedź: W pakiecie proces (dotnet restore) przywracania Nuget musi analizować zależności w projekcie, chodzić ich wykresy zależności, i dowiedzieć się, jakie pakiety powinny być zainstalowane na swoim projekcie i zależnościami Twojego projektu .

To nie jest trywialna ilość pracy, więc wyniki są buforowane w pliku project.lock.json, aby kolejne odtworzenia były szybsze i bardziej wydajne. Plik blokady zostanie zregenerowany, jeśli zmieniono project.json i ponownie wykonano dotnet restore.

+3

Zobacz także: [NuGet Docs: Project.json Reference] (https: // docs.nuget.org/ndocs/schema/project.json) –

1

Co jakiś czas, w naszym zespole, gdy ktoś aktualizuje jakieś Nuget, mamy ten sam problem, pliki lock.json doens't aktualizowane, nawet działa DotNet przywrócić więc, przed nałożeniem ostatniej wyboru (usuwanie im) Proponuję uruchomić grunt z wiersza poleceń. Jeśli to nie zadziała, usuń wszystkie pliki lock.json i wykonaj dotnet restore, to jest mój ulubiony wybór;)

+2

Co mamusień ma wspólnego z 'project.lock.json'? –