2016-06-28 5 views
68

ich die instruction gefolgt neues .NET-Core-Projekt zu erstellen und lief dies von cmd:Was ist project.lock.json?

dotnet new 
dotnet restore 

Die zweite Anweisung erstellt project.lock.json, die eine Menge Müll (nicht wirklich Müll aber Tonnen von Abhängigkeiten, Konfigurationen etc.) enthält . Ich nehme an, dass diese Abhängigkeiten .NET-Framework ist, das in separate NuGet-Pakete unterteilt ist.

Meine Fragen:

  1. Ist meine Annahme richtig?
  2. Kann ich meine Anwendung leichter machen, indem ich nicht benötigte NuGet-Pakete/Abhängigkeiten entferne?
  3. Wie?
+2

Warum wird dies abgelehnt? Ich glaube, dass NuGet für .net Kern-Apps benötigt wird. Andernfalls können Sie die Pakete lokal klonen und einen eigenen Feed bereitstellen. – roydukkey

+0

Normalerweise berühren Sie die Sperrdatei nicht. Sie würden die project.json selbst ändern, und die Sperrdatei wird sich selbst aktualisieren, wenn Sie die Tools ausführen. – gretro

+2

Ihre Frage # 2 ist eine gute und verdient meiner Meinung nach eine eigene Frage. –

Antwort

88

Kurze Antwort:project.lock.json wird von .NET Werkzeuge generiert, wenn Sie die Pakete des Projekts wiederherzustellen. Sie sollten es nicht anfassen oder in die Quellcodeverwaltung einchecken. Bearbeiten Sie project.json direkt.

Lange Antwort: Während der Paketwiederherstellungsprozess (dotnet restore), hat NuGet die Abhängigkeiten in Ihrem Projekt zu analysieren, gehen ihre Abhängigkeitsgraphen, und herauszufinden, welche Pakete sollten für Ihr Projekt und Ihr Projekt Abhängigkeiten installiert werden .

Dies ist eine nicht unerhebliche Menge an Arbeit, so dass die Ergebnisse in project.lock.json zwischengespeichert werden, um nachfolgende Wiederherstellungen schneller und effizienter zu machen. Die Sperrdatei wird regeneriert, wenn project.json geändert wird und dotnet restore erneut ausgeführt wird.

+3

Siehe auch: [NuGet Docs: Project.json Referenz] (https: // docs.nuget.org/ndocs/schema/project.json) –

1

Immer wieder, in unserem Team, wenn jemand einige nugget aktualisiert, haben wir das gleiche Problem, die lock.json Dateien werden nicht aktualisiert, sogar dotnet Wiederherstellung so, vor der Anwendung der letzten Wahl (Löschen Ich schlage vor, run grunt von Ihrer Kommandozeile aus. Wenn das nicht funktioniert, löschen Sie alle lock.json Dateien und führen Sie dotnet Restore, das ist meine Lieblingswahl;)

+2

Was hat grunt mit 'project.lock.json' zu tun? –