Búsqueda y evaluación de paquetes NuGet para el proyecto

Al iniciar un proyecto de .NET o identificar una necesidad funcional en la aplicación o el servicio, a menudo puede instalar paquetes NuGet existentes para ahorrar tiempo y evitar tener que crear sus propios paquetes. Los paquetes existentes pueden proceder de la colección pública de nuget.org o de orígenes privados que proporcionan la organización o terceros.

Búsqueda de paquetes

Puede encontrar paquetes directamente en https://nuget.org/packages o en la interfaz de usuario del Administrador de paquetes de Visual Studio o la consola del Administrador de paquetes con nuget.org como origen. Todos los paquetes de nuget.org se analizan regularmente en busca de virus.

En nuget.org/packages, verá una lista de paquetes NuGet con los paquetes más populares en todos los proyectos de .NET enumerados primero. Algunos de estos paquetes pueden ser útiles para los proyectos.

Screenshot that shows the default view of nuget.org/packages with the most popular packages at the top.

Para buscar un paquete, escriba el nombre del paquete o los términos de búsqueda en el cuadro de búsqueda situado en la parte superior de la página. Puede usar la sintaxis de búsqueda avanzada para filtrar la búsqueda.

Filtrado y ordenación avanzados

En nuget.org/packages, puede mejorar los resultados de búsqueda mediante el uso de las opciones avanzadas de filtrado y ordenación.

Screenshot that shows the filtering and sorting options on nuget.org.

Use los filtros de marcos para mostrar paquetes destinados a marcos de .NET Framework específicos (para obtener más información, consulte Plataformas de destino):

  • Al seleccionar una de las casillas de generación de .NET Framework, se filtrarán los resultados de búsqueda a los paquetes compatibles con cualquiera de las plataformas de destino individuales de esa generación. Por ejemplo, al .NET seleccionar se devolverán paquetes compatibles con cualquiera de los marcos de .NET modernos, incluido net5.0 a través net8.0de .

    Screenshot that shows the Framework filters on nuget.org.

  • Al expandir una de estas generaciones de marcos con las flechas de la derecha, se mostrarán monikers de la plataforma de destino (TFM) individuales por los que puede filtrar los resultados. Por ejemplo, al seleccionar net5.0 se devolverán paquetes compatibles con el marco ".NET 5.0".

  • De forma predeterminada, los paquetes se filtran por su lista expandida de marcos compatibles calculados. Si desea filtrar paquetes exclusivamente por los marcos de recursos que tienen como destino explícitamente, anule la selección de la casilla Incluir marcos compatibles .

  • Al combinar varios filtros de marco se muestran los resultados de búsqueda que coinciden con todos los filtros seleccionados, es decir, los paquetes que se encuentran en la intersección de las selecciones. Por ejemplo, al seleccionar netcoreapp3.1 y net45 juntos se mostrarán los paquetes que tienen como destino tanto ".NET Core 3.1" como ".NET Framework 4.5". Al seleccionar la casilla de generación de marcos .NET Core y la casilla net45 juntas se devolverán paquetes que tienen como destino ".NET Framework 4.5" y al menos uno de los TFM ".NET Core" (netcoreapp1.0 a través de netcoreapp3.1).

    • Como alternativa, si desea ver paquetes que coincidan con cualquiera de los filtros del marco, seleccione el botón de radio Any (Cualquier ) en la opción Modo de filtro de marco. Ahora, al seleccionar netcoreapp3.1 y net5.0 se mostrarán los paquetes que tienen como destino ".NET Core 3.1" o ".NET 5.0". Al activar la netcoreapp3.1 casilla y la .NET casilla de generación de marcos, se devolverán paquetes que tienen como destino ".NET Core 3.1" o cualquiera de los ". TFM de NET ' (net5.0 a ).net8.0
  • Puede obtener más información sobre cómo evaluar los marcos admitidos de un paquete y su compatibilidad con el proyecto aquí.

Use el filtro Tipo de paquete para mostrar los paquetes de un tipo específico:

  • Todos los tipos es la opción predeterminada y muestra todos los paquetes independientemente del tipo.
  • Los filtros de dependencia para paquetes NuGet normales que se pueden instalar en el proyecto.
  • Los filtros de la herramienta de .NET para los paquetes de herramientas de .NET que contienen aplicaciones de consola.
  • Los filtros de plantilla para las plantillas de .NET que puede usar para crear nuevos proyectos con el comando dotnet new.

De manera predeterminada, NuGet enumera todas las versiones de paquetes, incluidas las versiones preliminares y beta. En la sección Opciones, anule la selección de la casilla Incluir versión preliminar para mostrar solo las versiones estables del paquete publicadas.

Para aplicar los cambios, seleccione Aplicar. Para volver a los valores predeterminados, seleccione Restablecer.

Use la lista desplegable Ordenar por en la parte superior derecha de la página para ordenar la lista por varios criterios:

  • Relevancia es el valor predeterminado y ordena los resultados según un algoritmo de puntuación interno.
  • Descargas ordena los resultados de la búsqueda según el número total de descargas, en orden descendente.
  • Actualizado recientemente ordena los resultados de la búsqueda según la fecha de creación de última versión del paquete, en orden cronológico descendente.

Sintaxis de búsqueda

Las consultas de búsqueda del paquete en nuget.org, desde la CLI de NuGet y desde dentro de Visual Studio, usan la misma sintaxis. Otros orígenes de paquetes, como Azure Artifacts o el repositorio de paquetes de GitHub, pueden usar una sintaxis diferente o no admitir el filtrado avanzado.

  • Puede buscar en las propiedades del paquete id, packageid, version, title, tags, author, description, summary o owner mediante la sintaxis <property>:<term>.

  • La búsqueda se aplica a palabras clave y descripciones, y no distingue mayúsculas de minúsculas. Por ejemplo, todas las cadenas siguientes buscan en la propiedad id la cadena nuget.core:

    id:NuGet.Core
    ID:nuget.core
    Id:NUGET.CORE

  • Las búsquedas en la propiedad id son coincidencias de subcadena, mientras que packageid y owner usan coincidencias exactas sin distinción entre mayúsculas y minúsculas. Por ejemplo:

    PackageId:jquery busca el identificador exacto del paquete jquery.
    Id:jquery busca todos los identificadores de paquete que contienen la cadena jquery.

  • Puede buscar varios valores o propiedades al mismo tiempo. Por ejemplo:

    id:jquery id:ui busca varios términos en la propiedad id.
    id:jquery tags:validation busca varias propiedades.

  • La búsqueda omite las propiedades no admitidas, por lo que invalid:jquery ui es lo mismo que buscar ui, y invalid:jquery devuelve todos los paquetes.

Determinación de marcos admitidos

NuGet solo instala un paquete en un proyecto si los marcos .NET Framework admitidos del paquete incluyen las plataformas de destino del proyecto. Si el paquete no es compatible, NuGet emite un error.

Hay varias maneras de determinar los marcos que admite un paquete:

  • En la página de búsqueda, los marcos admitidos de un paquete aparecerán como distintivos debajo del identificador del paquete. Estas notificaciones muestran las versiones de marco compatibles más bajas de las generaciones de .NET, .NET Core, .NET Standard y .NET Framework . El paquete será compatible con cualquier versión del marco que sea igual o superior a la versión de distintivo que se muestra.

    Los distintivos "Azul oscuro" representan marcos de destino explícitos, mientras que los distintivos "azul claro" representan marcos compatibles calculados.

    Al hacer clic en un distintivo, se le redirigirá a la página de detalles del paquete en nuget.org. La pestaña Marcos de trabajo de la página del paquete mostrará la lista completa de marcos admitidos.

    Screenshot of the Framework badges on nuget.org's search page.

  • En la página del paquete de nuget.org, los marcos admitidos aparecen debajo del identificador de paquete y en la pestaña Marcos, pero no todos los paquetes muestran marcos admitidos.

    Screenshot of the Frameworks UI and tab on the package page at nuget.org.

  • Para descargar el paquete manualmente, seleccione Descargar paquete en Acerca de. Cambie la extensión de archivo del paquete descargado de .nupkg a .zip, abra la carpeta .zip y examine su carpeta lib. Hay subcarpetas de cada uno de los marcos admitidos, y cada subcarpeta se denomina con un moniker de la plataforma de destino (TFM). Para obtener más información, vea Plataformas de destino. Si no hay subcarpetas en lib y solo hay un archivo DLL, intente instalar el paquete para detectar su compatibilidad.

  • Intente instalar el paquete en un proyecto mediante Install-Package en la consola del Administrador de paquetes de Visual Studio. Si el paquete no es compatible, la salida de la consola muestra los marcos admitidos del paquete.

Paquetes de versión preliminar

Muchos autores de paquetes ofrecen versiones preliminares y beta mientras continúan realizando mejoras y buscan comentarios sobre las revisiones más recientes. De manera predeterminada, en nuget.org se muestran los paquetes de versión preliminar en los resultados de la búsqueda.

Para enumerar y buscar solo versiones estables:

  • En nuget.org, anule la selección de la casilla Incluir versión preliminar en el panel de búsqueda avanzada.
  • En la interfaz de usuario del Administrador de paquetes NuGet de Visual Studio, anule la selección de la casilla Incluir versión preliminar junto al cuadro de búsqueda.

Las herramientas de la consola del Administrador de paquetes de Visual Studio, la CLI de NuGet y la CLI de dotnet no incluyen versiones preliminares de manera predeterminada. Para incluir versiones preliminares:

  • En la consola del Administrador de paquetes, use el conmutador -IncludePrerelease con los comandos Find-Package, Get-Package, Install-Package, Sync-Package y Update-Package. Para obtener más información, consulte la referencia de PowerShell.

  • Para la CLI de NuGet, use el conmutador -prerelease con los comandos install, update, delete y mirror. Para obtener más información, vea la referencia de la CLI de NuGet.

  • Para la CLI de dotnet, especifique una versión preliminar con el argumento -v. Para más información, consulte la referencia de dotnet add package.

Paquetes nativos de C++

Los proyectos de Visual Studio C++ pueden usar paquetes NuGet nativos de C++. La instalación de estos paquetes habilita el comando de menú contextual Administrar paquetes NuGet, expone una plataforma de destino native y proporciona la integración de MSBuild.

Para buscar paquetes nativos en nuget.org o en paquetes, realice las búsquedas con tag:native. Estos paquetes suelen proporcionan archivos .targets y .props, que NuGet importa de forma automática cuando al añadir los paquetes.

Evaluación de los paquetes

La mejor manera de evaluar la utilidad de un paquete es probarlo. Cuando se usa, se toma una dependencia de un paquete, por lo que debe asegurarse de que es sólida y confiable. Sin embargo, instalar un paquete y probarlo directamente es un proceso lento. Puede aprender mucho sobre la calidad de un paquete mediante la información de la página del paquete en nuget.org/packages.

  • La marca de verificación Prefijo reservado junto al identificador de paquete de la lista de paquetes y la página del paquete significa que los propietarios del paquete han solicitado un prefijo de identificador de paquete reservado, el cual se les ha concedido. Para cumplir los criterios de reserva de prefijo de identificador, los propietarios del paquete deben identificarse claramente, así como a sus paquetes.

    Screenshot that shows Prefix Reserved on a package's page.

  • Descargas, en la columna derecha de la página del paquete, muestra el número Total de descargas, las descargas de la Versión actual y el Promedio por día. Los números grandes indican que el paquete se ha probado entre muchos desarrolladores.

    Screenshot that shows Download statistics on a package's page.

    Seleccione Estadísticas completas junto a Descargas para ver una página que muestra las descargas de paquetes de las últimas seis semanas por número de versión. Las versiones que usan más desarrolladores suelen ser mejores opciones.

  • La pestaña Usado por en la página del paquete muestra los cinco paquetes más populares de nuget.org y los repositorios de GitHub que dependen de este paquete. Los paquetes y repositorios que dependen de este paquete se pueden denominar dependientes. Se puede considerar que los paquetes y los repositorios dependientes aprueban este paquete, ya que han elegido confiar en él y depender de él.

    Screenshot that shows the Used By list.

    La versión estable más reciente de un paquete dependiente debe depender de cualquier versión de este paquete. Esta definición garantiza que los paquetes dependientes enumerados son un reflejo actualizado de las decisiones de los creadores del paquete de confiar en el paquete y depender de él. La lista de dependientes no muestra dependientes de versión preliminar, ya que aún no se consideran aprobaciones completas. En los ejemplos siguientes se presentan los paquetes que se muestran como dependientes:

    Versión del paquete dependiente ¿El paquete dependiente aparece como dependiente?
    v1.0.0
    La versión 1.1.0 (estable más reciente) depende de este paquete
    v1.2.0-preview
    TRUE, la versión estable más reciente depende de este paquete.
    La versión 1.0.0 depende de este paquete
    v1.1.0 (última versión estable)
    v1.2.0-preview
    FALSE, la versión estable más reciente no depende de este paquete.
    La versión 1.0.0 depende de este paquete
    v1.1.0 (última versión estable)
    La versión preliminar 1.2.0 depende de este paquete
    FALSE, la versión estable más reciente no depende de este paquete.

    El número de estrellas de un repositorio de GitHub indica su popularidad entre los usuarios de GitHub. Para obtener más información sobre el sistema de clasificación de estrellas y repositorios de GitHub, consulte Acerca de las estrellas.

    Nota:

    La sección Usado por se genera de forma automática periódicamente, sin revisión humana, y únicamente con fines informativos.

  • En la pestaña Versiones de la página del paquete se muestran las versiones, las descargas, las fechas de las últimas actualizaciones y vulnerabilidades graves de las versiones del paquete. La versión que instale no debe tener vulnerabilidades de gravedad alta. Un paquete con un mantenimiento correcto tiene actualizaciones recientes y un historial de versiones largo. Los paquetes descuidados tienen pocas actualizaciones y de hace mucho tiempo.

    Screenshot that shows the Versions list.

La columna derecha de la página del paquete tiene otros vínculos informativos:

Screenshot that shows the right column of the package page.

  • Seleccione Sitio web del proyecto, si está disponible, para ver qué opciones de soporte técnico proporciona el autor. Un proyecto con un sitio dedicado generalmente tiene un buen soporte técnico.

  • Seleccione Repositorio de origen para ir al repositorio de código fuente de Git del paquete. Muchos autores mantienen sus paquetes en repositorios de código abierto, por lo que los usuarios pueden contribuir directamente a correcciones de errores y mejoras de características. El historial de contribuciones del paquete es un buen indicador de cuántos desarrolladores están implicados de forma activa.

  • Seleccione licencia <licencia de tipo> para ver el MIT del paquete u otra licencia. Si un paquete no especifica los términos de licencia, póngase en contacto con su propietario.

  • En Propietarios, seleccione cualquiera de los propietarios del paquete para ver qué otros paquetes ha publicado. Los propietarios con varios paquetes tienen más probabilidades de seguir ofreciendo soporte técnico para su trabajo. Seleccione Ponerse en contacto con los propietarios junto a Propietarios para ponerse en contacto directamente con los desarrolladores de paquetes.

Recuperar información de licencia

Es posible que algunos clientes NuGet y fuentes nuGet no puedan exponer información de licencias. Para mantener la compatibilidad con versiones anteriores en estos casos, la dirección URL de licencia apunta a este documento, que trata sobre cómo recuperar la información de licencia.

Si al seleccionar la dirección URL de licencia de un paquete llegó a esta página, significa que el paquete contiene un archivo de licencia y que:

  • Está conectado a una fuente que aún no sabe cómo interpretar y exponer la nueva información de licencia para el cliente, o
  • Usa un cliente que aún no sabe cómo interpretar y leer la nueva información de licencia que proporciona la fuente, o
  • Una combinación de ambos escenarios.

Para leer la información del archivo de licencia dentro del paquete:

  1. Descargue el paquete NuGet manualmente y descomprima su contenido en una carpeta.
  2. Abra el archivo .nuspec en la raíz de la carpeta.
  3. Examine la etiqueta <license>, como <license type="file">license\license.txt</license>. La etiqueta de ejemplo indica que el archivo de licencia se denomina license.txt y está dentro de una subcarpeta denominada license.
  4. Vaya a la ubicación especificada y abra el archivo especificado.

Para obtener información sobre la equivalencia de MSBuild al hecho de configurar la licencia en .nuspec, consulte Empaquetado de una expresión de licencia o un archivo de licencia.

Pasos siguientes