78 votes

Qu'est-ce que le projet.lock.json ?

J'ai suivi le instruction pour créer un nouveau projet .NET Core et exécuter ceci depuis cmd :

dotnet new
dotnet restore

La deuxième déclaration crée project.lock.json qui contient beaucoup de déchets (pas vraiment des déchets mais des tonnes de dépendances, de configurations, etc.) Je suppose que ces dépendances sont le cadre .NET qui est divisé en paquets NuGet séparés.

Mes questions :

  1. Ma supposition est-elle correcte ?
  2. Puis-je alléger mon application en supprimant les paquets/dépendances NuGet non nécessaires ?
  3. Comment ?

2 votes

Pourquoi ce sujet a-t-il été rejeté ? Je crois que NuGet est nécessaire pour les applications .net core. Sinon, vous pouvez cloner les paquets localement et fournir votre propre flux.

0 votes

En général, on ne touche pas au fichier de verrouillage. Vous modifiez le project.json lui-même, et le fichier de verrouillage se met à jour lorsque vous exécutez les outils.

2 votes

Votre question n°2 est bonne et mérite, à mon avis, une question spécifique.

107voto

Nate Barbettini Points 26922

Mise à jour : project.json a été remplacé par .csproj comme fichier de projet principal pour les projets .NET Standard. Cette question fait référence à l'ancien système avant l'introduction de PackageReference dans NuGet 4.0 .

Vous pouvez encore voir occasionnellement project.lock.json comme un artefact du processus de construction, mais il doit être ignoré. La gestion des paquets NuGet dont dépend votre projet .NET Standard/.NET Core doit toujours être effectuée par l'un des moyens suivants

  • Modifier le .csproj fichier directement
  • Utilisation de la CLI dotnet ( dotnet add package etc)
  • Utilisation de l'interface graphique du gestionnaire de paquets si vous utilisez Visual Studio

Ancienne réponse pour la postérité : project.lock.json est généré par l'outil .NET lorsque vous restaurez les paquets du projet. Vous ne devez pas y toucher ni l'enregistrer dans le contrôle de la source. Modifier project.json directement.

Pendant le processus de restauration du paquet ( dotnet restore ), NuGet doit analyser les dépendances de votre projet, marcher su les graphiques de dépendances, et déterminez quels paquets doivent être installés pour votre projet et les dépendances de votre projet.

Il s'agit d'une quantité de travail non triviale, c'est pourquoi les résultats sont mis en cache dans le fichier project.lock.json pour rendre les restaurations ultérieures plus rapides et plus efficaces. Le fichier de verrouillage sera régénéré si project.json est modifié et dotnet restore est exécuté à nouveau.

3 votes

0 votes

Nous avons des temps de construction très lents sur Azure Devops. En regardant les logs, la restauration de nuget prend des minutes. Il y a eu quelques articles sur l'utilisation d'un cache. Comment puis-je accélérer ma compilation si, idéalement, nous ne devrions plus faire cela ?

2voto

xisket Points 119

De temps en temps, dans notre équipe, lorsque quelqu'un met à jour un nuget, nous avons le même problème, les fichiers lock.json ne sont pas mis à jour, même en exécutant la commande suivante restauration du réseau Ainsi, avant d'appliquer le dernier choix (les supprimer), je suggère d'exécuter grognement à partir de votre ligne de commande. Si cela ne marche pas, supprimez tous les fichiers lock.json et exécutez restauration du réseau c'est mon choix préféré ;)

3 votes

Qu'est-ce que Grunt a à voir avec project.lock.json ?

3 votes

Ne pas confondre package-lock.json con project.lock.json

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X