.net .net-core project.json

.net - ¿Qué es project.lock.json?



.net-core project.json (2)

Seguí las instruction para crear un nuevo proyecto .NET Core y ejecuté esto desde cmd:

dotnet new dotnet restore

La segunda declaración crea project.lock.json que contiene mucha basura (no realmente basura sino toneladas de dependencias, configuraciones, etc.). Supongo que estas dependencias son .NET framework que se divide en paquetes NuGet separados.

Mis preguntas:

  1. ¿Es correcta mi suposición?
  2. ¿Puedo hacer que mi aplicación sea más ligera eliminando los paquetes / dependencias NuGet no necesarios?
  3. ¿Cómo?

De vez en cuando, en nuestro equipo, cuando alguien actualiza algunos nuget, tenemos el mismo problema, los archivos lock.json no se actualizan, incluso ejecutan restauración dotnet , antes de aplicar la última opción (eliminarlos), sugiero ejecutar grunt desde su línea de comando. Si eso no funciona, elimine todos los archivos lock.json y ejecute la restauración dotnet , esta es mi opción favorita;)


Actualización : project.json ha sido reemplazado por .csproj como el archivo de proyecto principal para proyectos .NET Standard. Esta pregunta se refiere al antiguo sistema antes de la introducción de PackageReference en NuGet 4.0 .

Es posible que de vez en cuando vea project.lock.json como un artefacto del proceso de compilación, pero debe ignorarse. La administración de los paquetes NuGet de los que depende su proyecto .NET Standard / .NET Core siempre debe hacerse por cualquiera

  • Edición del archivo .csproj directamente
  • Uso de la CLI dotnet ( dotnet add package , etc.)
  • Usar la GUI de Package Manager si está usando Visual Studio

Antigua respuesta para la posteridad: project.lock.json es generado por las herramientas .NET cuando restaura los paquetes del proyecto. No debe tocarlo ni marcarlo en el control de fuente. Edite project.json directamente.

Durante el proceso de restauración de paquetes ( dotnet restore dotnet), NuGet tiene que analizar las dependencias en su proyecto, recorrer sus gráficos de dependencia y descubrir qué paquetes deben instalarse para su proyecto y las dependencias de su proyecto.

Esta es una cantidad de trabajo no trivial, por lo que los resultados se almacenan en caché en project.lock.json para que las restauraciones posteriores sean más rápidas y más eficientes. El archivo de bloqueo se regenerará si project.json se modifica y la dotnet restore se ejecuta nuevamente.