2016-06-28 31 views
68

Ho seguito le instruction per creare nuovo progetto .NET Core e corse questo da cmd:Che cos'è project.lock.json?

dotnet new 
dotnet restore 

La seconda istruzione crea project.lock.json che contiene un sacco di immondizia (non proprio spazzatura, ma tonnellate di dipendenze, configurazioni, ecc) . Presumo che queste dipendenze siano .NET framework suddiviso in pacchetti NuGet separati.

Le mie domande:

  1. È la mia ipotesi è corretta?
  2. Posso rendere la mia applicazione più leggera rimuovendo pacchetti/dipendenze NuGet non necessari?
  3. Come?
+2

Perché questo down è stato votato? Credo che NuGet sia richiesto per le app di rete .net. Altrimenti, puoi clonare i pacchetti localmente e fornire il tuo feed. – roydukkey

+0

In genere, non si tocca il file di blocco. Dovresti modificare project.json stesso e il file di blocco si aggiornerà automaticamente quando eseguirai gli strumenti. – gretro

+2

La tua domanda n. 2 è buona e merita la sua domanda SO a mio avviso. –

risposta

88

Risposta breve:project.lock.json è generato dal utensili .NET quando si ripristina i pacchetti del progetto. Non dovresti toccarlo o controllarlo nel controllo del codice sorgente. Modifica project.json direttamente.

Longer risposta: Durante il pacchetto di processo (dotnet restore) il ripristino, NuGet deve analizzare le dipendenze nel progetto, a piedi loro grafici di dipendenza, e capire quali pacchetti devono essere installati per il vostro progetto e le dipendenze del vostro progetto .

Questa è una quantità di lavoro non banale, quindi i risultati vengono memorizzati nella cache in project.lock.json per rendere i ripristini successivi più rapidi e più efficienti. Il file di blocco verrà rigenerato se project.json viene modificato e dotnet restore viene eseguito nuovamente.

+3

Vedere anche: [NuGet Docs: Project.json Reference] (https: // docs.nuget.org/ndocs/schema/project.json) –

1

Ogni tanto, nella nostra squadra, quando qualcuno aggiorna alcuni NuGet, abbiamo lo stesso problema, i file lock.json doens't si aggiorna, anche in esecuzione di ripristino dotnet così, prima di applicare l'ultima scelta (eliminazione loro) Suggerisco di eseguire grunt dalla riga di comando. Se questo non funziona, cancella tutti i file lock.json ed esegui dotnet restore, questa è la mia scelta preferita;)

+2

Cosa c'entra il grunt con 'project.lock.json'? –