Preguntas más frecuentes de NuGetNuGet frequently-asked questions

¿Qué se necesita para ejecutar NuGet?What is required to run NuGet?

Toda la información relacionada con las herramientas de interfaz de usuario y línea de comandos está disponible en la Guía de instalación.All the information around both UI and command-line tools is available in the Install guide.

¿Admite NuGet Mono?Does NuGet support Mono?

La herramienta de línea de comandos, nuget.exe, compila y se ejecuta en Mono 3.2 y versiones posteriores, y puede crear paquetes en Mono.The command-line tool, nuget.exe, builds and runs under Mono 3.2+ and can create packages in Mono.

Aunque nuget.exe funciona completamente en Windows, existen problemas conocidos en Linux y OS X. Consulte Problemas de Mono en GitHub.Although nuget.exe works fully on Windows, there are known issues on Linux and OS X. Refer to Mono issues on GitHub.

Un cliente gráfico está disponible como complemento para MonoDevelop.A graphical client is available as an add-in for MonoDevelop.

¿Cómo puedo averiguar lo que contiene un paquete y si es estable y útil para mi aplicación?How can I determine what a package contains and whether it's stable and useful for my application?

La fuente principal para obtener información sobre un paquete es su página de listado en nuget.org (u otra fuente privada).The primary source for learning about a package is its listing page on nuget.org (or another private feed). Cada página de paquete en nuget.org incluye una descripción del paquete, su historial de versiones y estadísticas de uso.Each package page on nuget.org includes a description of the package, its version history, and usage statistics. En la sección Información de la página del paquete también se incluye un vínculo al sitio web del proyecto donde normalmente encontrará muchos ejemplos y otra documentación para ayudarle a obtener información sobre cómo se usa el paquete.The Info section on the package page also contains a link to the project's web site where you typically find many examples and other documentation to help you learn how the package is used.

Para más información, vea Búsqueda y selección de paquetes.For more information, see Finding and choosing packages.

NuGet en Visual StudioNuGet in Visual Studio

¿Cómo se admite NuGet en los diferentes productos de Visual Studio?How is NuGet supported in different Visual Studio products?

¿Cómo puedo comprobar la versión exacta de las herramientas de NuGet que están instaladas?How do I check the exact version of the NuGet tools that are installed?

En Visual Studio, use el comando Ayuda > Acerca de Microsoft Visual Studio y mire la versión que se muestra junto a Administrador de paquetes NuGet.In Visual Studio, use the Help > About Microsoft Visual Studio command and look at the version displayed next to NuGet Package Manager.

O bien, inicie la consola del Administrador de paquetes (Herramientas > Administrador de paquetes NuGet > Consola del Administrador de paquetes) y escriba $host para ver información sobre NuGet, incluida la versión.Alternatively, launch the Package Manager Console (Tools > NuGet Package Manager > Package Manager Console) and enter $host to see information about NuGet including the version.

¿Qué lenguajes de programación son compatibles con NuGet?What programming languages are supported by NuGet?

En general, NuGet funciona para lenguajes .NET y está diseñado para incluir bibliotecas .NET en un proyecto.NuGet generally works for .NET languages and is designed to bring .NET libraries into a project. Como también admite la automatización de MSBuild y Visual Studio en algunos tipos de proyecto, también admite otros proyectos y lenguajes hasta cierto punto.Because it also supports MSBuild and Visual Studio automation in some project types, it also supports other projects and languages to various degrees.

La versión más reciente de NuGet es compatible con C#, Visual Basic, F#, WiX y C++.The most recent version of NuGet supports C#, Visual Basic, F#, WiX, and C++.

¿Qué plantillas de proyecto son compatibles con NuGet?What project templates are supported by NuGet?

NuGet es totalmente compatible con una variedad de plantillas de proyecto como Windows, web, de nube, SharePoint, Wix y otras.NuGet has full support for a variety of project templates like Windows, Web, Cloud, SharePoint, Wix, and so on.

¿Cómo puedo actualizar los paquetes que forman parte de plantillas de Visual Studio?How do I update packages that are part of Visual Studio templates?

Vaya a la pestaña Actualizaciones en la interfaz de usuario del Administrador de paquetes y seleccione Actualizar todo, o use el comando Update-Package desde la consola del Administrador de paquetes.Go to the Updates tab in the Package Manager UI and select Update All, or use the Update-Package command from the Package Manager Console.

Para actualizar la plantilla propiamente dicha, debe actualizar manualmente el repositorio de plantillas.To update the template itself, you need to manually update the template repository. Vea el blog de Xavier Decoster sobre este tema.See Xavier Decoster's blog on this subject. Tenga en cuenta que esto se realiza bajo su responsabilidad, ya que es posible que las actualizaciones manuales dañen la plantilla si la versión más reciente de todas las dependencias no es compatible entre sí.Note that this is done at your own risk, because manual updates might corrupt the template if the latest version of all dependencies are not compatible with each other.

¿Puedo usar NuGet fuera de Visual Studio?Can I use NuGet outside of Visual Studio?

Sí, NuGet funciona directamente desde la línea de comandos.Yes, NuGet works directly from the command line. Vea la Guía de instalación y la Referencia de la CLI.See the Install guide and the CLI reference.

Línea de comandos de NuGetNuGet command line

¿Cómo puedo obtener la versión más reciente de la herramienta de línea de comandos de NuGet?How do I get the latest version of NuGet command line tool?

Vea la Guía de instalación.See the Install guide.

¿Cuál es la licencia de nuget.exe?What is the license for nuget.exe?

Está autorizado a redistribuir nuget.exe conforme a los términos de la licencia MIT.You are allowed to redistribute nuget.exe under the terms of the MIT license. Es responsable de la actualización y el mantenimiento de las copias de nuget.exe que elija para redistribuir.You are responsible for updating and servicing any copies of nuget.exe that you choose to redistribute.

¿Es posible extender la herramienta de línea de comandos de NuGet?Is it possible to extend the NuGet command line tool?

Sí, es posible agregar comandos personalizados a nuget.exe, como se describe en la publicación de Rob Reynold.Yes, it's possible to add custom commands to nuget.exe, as described in Rob Reynold's post.

Consola del Administrador de paquetes NuGet (Visual Studio en Windows)NuGet Package Manager Console (Visual Studio on Windows)

¿Cómo puedo obtener acceso al objeto DTE en la consola del Administrador de paquetes?How do I get access to the DTE object in the Package Manager console?

El objeto de nivel superior en el modelo de objetos de automatización de Visual Studio se denomina objeto DTE (Entorno de herramientas de desarrollo).The top-level object in the Visual Studio automation object model is called the DTE (Development Tools Environment) object. La consola lo proporciona a través de una variable denominada $DTE.The console provides this through a variable named $DTE. Para más información, vea Información general del modelo de automatización en la documentación de extensibilidad de Visual Studio.For more information, see Automation Model Overview in the Visual Studio Extensibility documentation.

Intento convertir la variable $DTE al tipo DTE2, pero obtengo un error: No se puede convertir el valor de "EnvDTE.DTEClass" del tipo "EnvDTE.DTEClass" al tipo "EnvDTE80.DTE2". ¿Qué ocurre?I try to cast the $DTE variable to the type DTE2, but I get an error: Cannot convert the "EnvDTE.DTEClass" value of type "EnvDTE.DTEClass" to type "EnvDTE80.DTE2". What's wrong?

Se trata de un problema conocido de cómo interactúa PowerShell con un objeto COM.This is a known issue with how PowerShell interacts with a COM object. Intente lo siguiente:Try the following:

`$dte2 = Get-Interface $dte ([EnvDTE80.DTE2])`

Get-Interface es una función auxiliar agregada por el host de PowerShell de NuGet.Get-Interface is a helper function added by the NuGet PowerShell host.

Creación y publicación de paquetesCreating and publishing packages

¿Cómo puedo mostrar el paquete en una fuente?How do I list my package in a feed?

Vea Creación y publicación de un paquete.See Creating and publishing a package.

Tengo varias versiones de la biblioteca destinadas a versiones diferentes de .NET Framework. ¿Cómo genero un único paquete que admita esto?I have multiple versions of my library that target different versions of the .NET Framework. How do I build a single package that supports this?

Vea Compatibilidad con varias versiones y perfiles de .NET Framework.See Supporting Multiple .NET Framework Versions and Profiles.

¿Cómo configuro mi propio repositorio o fuente?How do I set up my own repository or feed?

Vea la Información general sobre hospedaje de paquetes.See the Hosting packages overview.

¿Cómo puedo cargar paquetes a mi fuente de NuGet de forma masiva?How can I upload packages to my NuGet feed in bulk?

Vea Publicación masiva de paquetes NuGet (jeffhandly.com).See Bulk publishing NuGet packages (jeffhandly.com).

Trabajar con paquetesWorking with packages

¿Cuál es la diferencia entre un paquete de nivel de proyecto y un paquete de nivel de solución?What is the difference between a project-level package and a solution-level package?

Un paquete de nivel de solución (NuGet 3.x y versiones posteriores) solo se instala una vez en una solución y después está disponible para todos los proyectos de la solución.A solution-level package (NuGet 3.x+) is installed only once in a solution and is then available for all projects in the solution. Un paquete de nivel de proyecto se instala en cada uno de los proyectos en los que se use.A project-level package is installed in each project that uses it. Es posible que un paquete de nivel de solución también instale comandos nuevos que se pueden llamar desde la consola del Administrador de paquetes.A solution-level package might also install new commands that can be called from within the Package Manager Console.

¿Es posible instalar paquetes NuGet sin conectividad a Internet?Is it possible to install NuGet packages without Internet connectivity?

Sí, vea la entrada de blog de Scott Hanselman How to access NuGet when nuget.org is down (or you're on a plane) [Cómo obtener acceso a NuGet cuando nuget.org está inactivo (o está en un avión)] en hanselman.com.Yes, see Scott Hanselman's Blog post How to access NuGet when nuget.org is down (or you're on a plane) (hanselman.com).

¿Cómo instalo paquetes en una ubicación distinta de la carpeta de paquetes predeterminada?How do I install packages in a different location from the default packages folder?

Establezca el valor repositoryPath de Nuget.Config mediante nuget config -set repositoryPath=<path>.Set the repositoryPath setting in Nuget.Config using nuget config -set repositoryPath=<path>.

¿Cómo puedo evitar que la carpeta de paquetes NuGet se agregue al control de código fuente?How do I avoid adding the NuGet packages folder into to source control?

Establezca disableSourceControlIntegration de Nuget.Config en true.Set the disableSourceControlIntegration in Nuget.Config to true. Esta clave funciona en el nivel de la solución y, por tanto, debe agregarse al archivo $(Solutiondir)\.nuget\Nuget.Config.This key works at the solution level and hence need to be added to the $(Solutiondir)\.nuget\Nuget.Config file. Al habilitar la restauración de paquetes desde Visual Studio, se crea automáticamente este archivo.Enabling package restore from Visual Studio creates this file automatically.

¿Cómo se desactiva la restauración de paquetes?How do I turn off package restore?

Vea Habilitar y deshabilitar la restauración de paquetes.See Enabling and disabling package restore.

¿Por qué aparece un error "No se puede resolver la dependencia" al instalar un paquete local con dependencias remotas?Why do I get an "Unable to resolve dependency error" when installing a local package with remote dependencies?

Debe seleccionar el origen Todos al instalar un paquete local en el proyecto.You need to select the All source when installing a local package into the project. Esto agrega todas las fuentes en lugar de usar solo una.This aggregates all the feeds instead of using just one. El motivo por el que se produce este error es que los usuarios de un repositorio local a menudo quieren evitar la instalación accidental de un paquete remoto debido a las directivas de la empresa.The reason this error appears is that users of a local repository often want to avoid accidentally installing a remote package due to corporate polices.

Tengo varios proyectos en la misma carpeta, ¿cómo puedo usar archivos packages.config independientes para cada proyecto?I have multiple projects in the same folder, how can I use separate packages.config files for each project?

En la mayoría de los proyectos en los que los proyectos independientes se encuentran en carpetas independientes, esto no es un problema ya que NuGet identifica los archivos packages.config de cada proyecto.In most projects where separate projects live in separate folders, this is not a problem as NuGet identifies the packages.config files in each project. Con NuGet 3.3 y versiones posteriores, y varios proyectos en la misma carpeta, puede insertar el nombre del proyecto en los nombres de archivo packages.config, usar el modelo packages.{project-name}.config y que NuGet use ese archivo.With NuGet 3.3+ and multiple projects in the same folder, you can insert the name of the project into the packages.config filenames use the pattern packages.{project-name}.config, and NuGet uses that file.

Esto no es un problema al usar PackageReference, ya que cada archivo de proyecto contiene su propia lista de dependencias.This is not an issue when using PackageReference, as each project file contains its own list of dependencies.

No veo nuget.org en mi lista de repositorios, ¿cómo lo recupero?I don't see nuget.org in my list of repositories, how do I get it back?

  • Agregue https://api.nuget.org/v3/index.json a la lista de orígenes, o bienAdd https://api.nuget.org/v3/index.json to your list of sources, or
  • Elimine %appdata%\.nuget\NuGet.Config (Windows) o ~/.nuget/NuGet/NuGet.Config (Mac/Linux) y deje que NuGet se vuelve a crear.Delete %appdata%\.nuget\NuGet.Config (Windows) or ~/.nuget/NuGet/NuGet.Config (Mac/Linux) and let NuGet re-create it.

¿Cuáles son los términos de licencia predeterminados si un paquete no proporciona información específica de licencia?What are the default license terms if a package doesn't provide specific license information?

Cada paquete se rige por los términos que se incluyen con el paquete.Each package is governed by the terms that are included with the package. Debe revisar los términos aplicables antes de obtener acceso a los paquetes, descargarlos o adquirirlos.You should review the applicable terms before accessing, downloading, or acquiring any packages. En nuget.org, use el vínculo Información de licencia de la página del paquete.On nuget.org, use the License Info link on the package page.

Si un paquete no especifica los términos de licencia, póngase en contacto con el propietario del paquete directamente mediante el vínculo Póngase en contacto con el propietario en la página del paquete en nuget.org.If a package does not specify the licensing terms, contact the package owner directly using the Contact owners link on the nuget.org package page. Microsoft no le ofrece licencia para propiedad intelectual de proveedores de paquetes de terceros ni es responsable de la información proporcionada por terceros.Microsoft does not license any intellectual property to you from third party package providers and is not responsible for information provided by third parties.

Administración de paquetes en nuget.orgManaging packages on nuget.org

¿Puedo editar metadatos de paquete después de cargarlos? ¿Por qué se requiere modificar el archivo nuspec y cargar un paquete nuevo para realizar cambios en los metadatos del paquete?Can I edit package metadata after it's been uploaded? Why do you require editing the nuspec and uploading a new package for making changes to package metadata?

NuGet requiere que todos los paquetes estén firmados.NuGet requires all packages to be signed. Un principio de diseño de la firma de paquetes es que el contenido del paquete firmado debe ser inmutable, lo que incluye el archivo nuspec.A design principle of package signing is that signed package content must be immutable, which includes the nuspec. Al modificar los metadatos del paquete se producen cambios en el archivo nuspec, lo que invalida las firmas existentes.Editing the package metadata results in changes to the nuspec, invalidating existing signatures. Se recomienda modificar los flujos de trabajo existentes para que no se requiera la modificación de los metadatos del paquete una vez creado el paquete.We recommend modifying existing workflows to not require editing the package metadata after the package has been created.

Tenga en cuenta que las dependencias indicadas para el paquete se generan automáticamente a partir del propio paquete y no se pueden modificar.Note that dependencies listed for your package are generated automatically from the package itself and cannot be edited.

Además, cargar paquetes en staging.nuget.org es una excelente manera de probar y validar el paquete sin hacer que esté disponible en la galería pública.In addition, uploading packages to staging.nuget.org is a great way to test and validate your package without making a package available in the public gallery.

¿Es posible reservar nombres para los paquetes que se van a publicar en el futuro?Is it possible to reserve names for packages that will be published in future?

Sí.Yes. Puede reservar identificadores para paquetes en nuget.org solicitando un prefijo de Id. de paquete para su cuenta.You can reserve IDs for packages on nuget.org by requesting a package ID prefix for your account. Para pedir un prefijo de identificador de paquete, siga las instrucciones de la documentación.In order to request a package ID prefix, follow the instructions in the documentation.

¿Cómo puedo reclamar la propiedad de los paquetes?How do I claim ownership for packages ?

Vea Administrar los propietarios de paquetes en nuget.org.See Managing package owners on nuget.org.

¿Qué puedo hacer con el propietario de un paquete que infringe mi licencia de software?How do I deal with a package owner who is violating my software license?

Se recomienda que la comunidad de NuGet trabaje de forma conjunta para resolver los conflictos que puedan surgir entre los propietarios de paquetes y los propietarios de otro software.We encourage the NuGet community to work together to resolve any disputes that may arise between package owners and the owners of other software. Se ha diseñado un proceso de resolución de conflictos que se debe seguir antes de solicitar la actuación de los administradores de nuget.org.We have crafted a dispute resolution process to follow before asking nuget.org administrators to intercede.

¿Se recomienda cargar los paquetes de prueba en nuget.org?Is it recommended to upload my test packages to nuget.org?

Para fines de prueba, se puede usar staging.nuget.org, o bien servidores públicos alternativos de NuGet como myget.org o Visual Studio Team Services.For test purposes, you can use staging.nuget.org, or alternative public NuGet servers like myget.org or Visual Studio Team Services.

Tenga en cuenta que es posible que los paquetes que se cargan en staging.nuget.org no se conserven.Note that packages uploaded to staging.nuget.org may not be preserved. Vea Adiós a preview.See Goodbye preview.

¿Cuál es el tamaño máximo de los paquetes que puedo cargar en nuget.org?What is the maximum size of packages I can upload to nuget.org?

nuget.org permite paquetes de hasta 250 MB, pero se recomienda mantener los paquetes por debajo de 1 MB si es posible y usar dependencias para vincular los paquetes.nuget.org allows packages up to 250MB, but we recommend keeping packages under 1MB if possible and using dependencies to link packages together. Como regla general, los paquetes solo contienen un ensamblado para evitar conflictos.As a rule of thumb, packages contain only one assembly to avoid collisions.

NuGet usa HTTP para descargar los paquetes, por lo que la probabilidad de que se produzca un error en la instalación es mayor en los paquetes más grandes que en los de menor tamaño.NuGet uses HTTP to download packages, so larger packages have a higher likelihood of failed installs than smaller ones.

Es posible compartir dependencias entre varios paquetes, lo que reduce el tamaño total de la descarga para los consumidores de los paquetes NuGet.It is possible to share dependencies between multiple packages, making the total download size for consumers of your NuGet packages smaller.

Las dependencias son principalmente estáticas y nunca cambian.Dependencies are mostly static and never change. Cuando se corrige un error en el código, es posible que no sea necesario actualizar las dependencias.When fixing a bug in code, the dependencies may not need to be updated. Si agrupa las dependencias, terminará creando paquetes cada vez más grandes.If you bundle dependencies, you end up reshipping larger packages every time. Al dividir los paquetes NuGet en dependencias relacionadas, las actualizaciones son mucho más específicas para los consumidores del paquete.By splitting NuGet packages into related dependencies, upgrades are much more fine-grained for consumers of your package.

No se puede obtener acceso a nuget.orgnuget.org not accessible

¿Por qué no puedo descargar ni cargar paquetes en nuget.org?Why can't I download packages from or upload packages to nuget.org?

En primer lugar, asegúrese de que está usando la versión más reciente de NuGet.First, make sure you're using the latest versions of NuGet. Si siguen produciéndose errores en esa versión, póngase en contacto con el soporte técnico y proporcione información adicional para la solución de problemas de conexión:If that version continues to fail, contact support and provide additional connection troubleshooting information including:

  • La versión de NuGet que está usandoThe version of NuGet you're using
  • Los orígenes de paquete que está usandoThe package sources you're using
  • Un registro de restauración con nivel de detalle detalladoA restore log with detailed verbosity
  • MTR o seguimientos de Fiddler (ver a continuación)MTR or a Fiddler traces (see below)
  • El área geográficaYour geographical area
  • La versión del sistema operativoYour operating system version
  • Configuración del equipo (CPU, red, unidad de disco duro)Machine configuration (CPU, Network, hard drive)
  • Si el equipo está detrás de un proxy o firewallWhether is your machine behind a proxy or firewall
  • Las versiones de .NET instaladas en el equipoThe versions of .NET that are installed on the machine
  • Versiones de las herramientas multiplataforma, como la CLI de .NET o DNU, que esté usandoVersions of cross-platform tools such as .NET CLI, or DNU that you're using

Para capturar MTR:To capture MTR:

  • Descarga de WinMTR de http://winmtr.net/download/Download WinMTR from http://winmtr.net/download/

  • Escriba api.nuget.org como nombre de host y haga clic en Start (Iniciar).Enter api.nuget.org as the hostname and click Start.

  • Espere hasta que el valor de la columna Sent (Enviados) sea >= 100.Wait until the Sent column is >= 100.

    Captura de MTR

  • Copie el texto en el Portapapeles.Copy text to clipboard.

Para capturar Fiddler:To capture Fiddler:

  • Instale la versión más reciente de Fiddler.Install the latest version of Fiddler.
  • Inicie Fiddler y deshabilite la captura de tráfico mediante el menú File > Capture Traffic (Archivo > Capturar tráfico).Start Fiddler and disable capturing traffic using the File > Capture Traffic menu.
  • Quite todas las sesiones (seleccione todos los elementos en la lista y presione la tecla Suprimir).Remove all sessions (select all items in the list, press the Delete key).
  • Configure Fiddler para capturar el tráfico HTTPS activando Decrypt HTTPS traffic (Descifrar tráfico HTTPS) en la pestaña HTTPS del menú Tools > Fiddler Options... (Herramientas > Opciones de Fiddler).Configure Fiddler to capture HTTPS traffic by checking Decrypt HTTPS traffic in the HTTPS tab of the Tools > Fiddler Options... menu.
  • Cierre Visual Studio.Close Visual Studio.
  • Habilite el menú File > Capture Traffic (Archivo > Capturar tráfico).Enable the File > Capture Traffic menu.
  • Inicie Visual Studio o nuget.exe, y ejecute las acciones que no están funcionando.Start Visual Studio or nuget.exe .exe and perform the actions that are not working. El tráfico generado por estas acciones debería aparecer en Fiddler.The traffic generated by these actions should show up in Fiddler.
  • Una vez que se ejecuten las acciones, use File > Save > All Sessions (Archivo > Guardar > Todas las sesiones) para almacenar las sesiones capturadas.Once the actions have run, use File > Save > All Sessions to store the captured sessions.

Nota: Es posible que sea necesario establecer la variable de entorno HTTP_PROXY en http://127.0.0.1:8888 para enrutar el tráfico de NuGet a través de Fiddler.Note: it may be required to set the HTTP_PROXY environment variable to http://127.0.0.1:8888 for routing NuGet traffic through Fiddler.

Si eso no funciona, pruebe las sugerencias mencionadas en esta publicación de StackOverflow.If that fails, try the tips mentioned in this StackOverflow post.

¿Cuáles son los puntos de conexión de API para nuget.org?What are the API endpoints for nuget.org?

V3: https://api.nuget.org/v3/index.json V2: https://www.nuget.org/api/v2/ (Tenga en cuenta que la API V2 está en desuso y no funciona con NuGet 4 y versiones posteriores).V3: https://api.nuget.org/v3/index.json V2: https://www.nuget.org/api/v2/ (Note that the V2 API is deprecated and does not work with NuGet 4+.)