Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

255
Views
Agregue un paquete con un archivo de paquete local en 'dotnet'

Con la herramienta de línea de comandos dotnet , ¿cómo puedo agregar una referencia a un paquete local existente que no se descarga con NuGet?

He intentado agregar un paquete local a una bar de proyecto con dotnet :

 dotnet add package /Users/sakra/foo/bin/Debug/foo.1.0.0.nupkg

El paquete foo.1.0.0.nupkg se creó con dotnet pack en un proyecto diferente. Sin embargo, el comando dotnet add package intenta descargar el archivo foo.1.0.0.nupkg de https://api.nuget.org/ que, por supuesto, falla.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

No hay forma de instalar directamente un único paquete .nupkg . NuGet solo puede instalar y restaurar desde fuentes, por lo que deberá agregar el directorio donde se encuentra el paquete como fuente.

Para hacer esto, agregue un archivo NuGet.Config que agregue la ubicación del directorio como fuente, para que no tenga que agregar el parámetro de origen a cada comando relacionado con NuGet (especialmente dotnet restore ):

 <?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="local-packages" value="../foo/bin/Debug" /> </packageSources> </configuration>

Alternativamente, en las herramientas .NET Core 2.0/NuGet 4.3.0, también puede agregar la fuente directamente al archivo .csproj que se supone que consume la fuente de NuGet:

 <PropertyGroup> <RestoreSources>$(RestoreSources);../foo/bin/Debug;https://api.nuget.org/v3/index.json</RestoreSources> </PropertyGroup>

Esto hará que todos los comandos puedan usar el paquete:

  • dotnet add package foo (opcionalmente agregar -v 1.0.0 )
  • dotnet restore
  • dotnet run

dotnet add package foo agregará una referencia de paquete (suposición aquí, versión 1.0.0 ) a *.csproj :

 <ItemGroup> + <PackageReference Include="foo" Version="1.0.0" /> </ItemGroup>

Tenga en cuenta que durante el desarrollo, si cambia el paquete NuGet, pero no incrementa su versión tanto en el proyecto que produce el archivo .nupkg como en el proyecto que lo consume, deberá borrar la caché de paquetes local antes de restaurar nuevamente. :

 dotnet nuget locals all --clear dotnet restore

Creé un pequeño proyecto de ejemplo en https://github.com/dasMulli/LocalNupkgExample

over 4 years ago · Santiago Trujillo Report

0

He luchado mucho con esto, y esta es la única forma en que puedo hacer que funcione:

  • Cree una nueva 'fuente de paquete' para usar

  • Instale el archivo .nupkg en el código fuente del paquete, usando nuget add ...

  • Use dotnet add package Foo -s ... para instalar el paquete.

Específicamente, los comandos que necesita usar son:

nuget agregar ../lo que sea/lib/MiPaquete.1.0.0.nupkg -Fuente ./paquetes

Y:

dotnet agregar paquete MiPaquete -s ./paquetes

Note específicamente , un par de puntos aquí:

  • Primero, no puede simplemente copiar el archivo .nupkg en la carpeta de paquetes. He probado muchas variaciones de esto, y todo lo que puedo decir es que no funciona para mí, en Windows, Mac o Linux.

  • Debe usar una versión de NuGet que sea al menos 3, o esto no funcionará. La versión predeterminada de .NET Core es 2.xx en el momento de escribir este artículo. Deberá actualizar NuGet manualmente.

  • Su referencia en el archivo .csproj se verá así:

... Referencia del paquete Incluir = "SolidMud" Versión = "1.0.0" ...

Es decir, tenga en cuenta específicamente que no hace referencia a la fuente de su paquete en la información de dependencia; solo el nombre del paquete y la versión.

Básicamente, esto significa que si ejecuta dotnet restore , no funcionará a menos que el paquete se almacene en caché en su caché NuGet global en esa máquina; debe ejecutar dotnet restore -s ./packages la primera vez que realiza una restauración.

Como se menciona en otra respuesta, los paquetes se almacenan en caché globalmente; si desea pasar a una nueva versión con la misma identificación de versión, debe usar dotnet nuget locals all --clear o eliminar manualmente la versión del paquete almacenado en caché.

Este es un ejemplo específico y completo de cómo restaurar un .nupkg llamado 'SolidMud' en una nueva aplicación de consola .NET Core:

 $ dotnet new console -n TestPkgs The template "Console Application" was created successfully. Processing post-creation actions... Running 'dotnet restore' on TestPkgs/TestPkgs.csproj... Restore succeeded. $ cd TestPkgs/ $ mkdir packages $ nuget add ../core-solidmud/lib/SolidMud.1.0.0.nupkg -Source ./packages Installing SolidMud 1.0.0. Successfully added package '../core-solidmud/lib/SolidMud.1.0.0.nupkg' to feed './packages'. $ dotnet add package SolidMud -s ./packages Microsoft (R) Build Engine version 15.3.117.23532 Copyright (C) Microsoft Corporation. All rights reserved. Writing /var/folders/29/0695l4fj26j64kp4p8vwqq5h0000gn/T/tmpkRBaST.tmp info : Adding PackageReference for package 'SolidMud' into project '/Users/doug/dev/dotnet-packages/TestPkgs/TestPkgs.csproj'. log : Restoring packages for /Users/doug/dev/dotnet-packages/TestPkgs/TestPkgs.csproj... info : Package 'SolidMud' is compatible with all the specified frameworks in project '/Users/doug/dev/dotnet-packages/TestPkgs/TestPkgs.csproj'. info : PackageReference for package 'SolidMud' version '1.0.0' added to file '/Users/doug/dev/dotnet-packages/TestPkgs/TestPkgs.csproj'.
over 4 years ago · Santiago Trujillo Report

0

Especifique la carpeta de ubicación del paquete usando la opción -s|--source . Por ejemplo:

 dotnet add package Microsoft.AspNetCore.Cors -s "d:\Cache\localfeed" -f netcoreapp1.1

Ingrese la descripción de la imagen aquí

ACTUALIZACIÓN : gracias a la respuesta de MartinUllrich : no puede simplemente instalar un archivo .nupkg . Es necesario especificar una fuente local y agregar un archivo .nupkg local a la fuente antes de poder instalar el paquete. Verifique la respuesta de MartinUllrich para más detalles.

Desafortunadamente, podría enfrentar este problema de bloqueo:

El paquete 'NameOfPackage' es incompatible con 'todos' los marcos del proyecto

En este momento está abierto y pude reproducirlo en una versión de paquete estable.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!