Compartir vía


NuGet frente a SDK como referencia de proyecto

Este artículo está diseñado para ayudar a los desarrolladores a elegir si empaquetan su software como un paquete NuGet o como un kit de desarrollo de software (SDK). En concreto, se describen las diferencias entre los dos cuando se hace referencia a ellas en un proyecto de Visual Studio.

  • nuGet es un sistema de administración de paquetes de código abierto que simplifica el proceso de incorporación de bibliotecas en un proyecto. Para .NET (incluido .NET Core), NuGet es el mecanismo compatible con Microsoft para compartir código. NuGet define cómo se crean, hospedan y consumen los paquetes de .NET y proporcionan las herramientas para cada uno de esos roles. En Visual Studio, puedes agregar paquetes NuGet a un proyecto mediante la interfaz de usuario del Administrador de paquetes .

  • Un SDK es una colección de archivos que Visual Studio trata como un único elemento de referencia. El cuadro de diálogo Administrador de referencias de Visual Studio enumera todos los SDK que son relevantes para el proyecto actual al elegir Agregar referencia. Al agregar un SDK a un proyecto, puede acceder a todo el contenido de ese SDK a través de IntelliSense, la ventana Cuadro de herramientas, los diseñadores, el Examinador de objetos, MSBuild, la implementación, la depuración y el empaquetado.

¿Qué mecanismo debo usar?

La tabla siguiente le ayuda a comparar las características de referencia de un SDK con las características de referencia de NuGet.

Característica Compatibilidad con SDK Notas del SDK Compatibilidad con NuGet Notas de NuGet
El mecanismo hace referencia a una entidad y, a continuación, todos los archivos y funcionalidades están disponibles. S Para agregar un SDK, use el cuadro de diálogo Administrador de referencias. Todos los archivos y funcionalidades están disponibles durante el flujo de trabajo de desarrollo. S
MSBuild consume automáticamente ensamblados y archivos de metadatos de Windows (.winmd). S Las referencias del SDK se pasan automáticamente al compilador. S
MSBuild consume automáticamente los archivos .h o .lib. S El archivo SDKName.props de indica a Visual Studio cómo configurar el directorio de Visual C++, etc., para el consumo automático de archivos .h o .lib. N
MSBuild consume automáticamente los archivos .js o .css. S En Explorador de soluciones, puede expandir el nodo de referencia del SDK de JavaScript para mostrar archivos individuales .js o .css y, a continuación, generar etiquetas <source include/> arrastrando esos archivos a sus archivos de origen. El SDK admite F5 y la configuración automática de paquetes. S
MSBuild agrega automáticamente el control en el Cuadro de herramientas. S El cuadro de herramientas puede consumir SDKs y mostrar controles en las pestañas que especifiques. N
El mecanismo admite el Instalador de Visual Studio para extensiones (VSIX). S VSIX tiene un manifiesto y una lógica especiales para crear paquetes del SDK S VSIX se puede incrustar en otro programa de instalación.
El explorador de objetos enumera las referencias. S El examinador de objetos obtiene automáticamente la lista de referencias en los SDK y las enumera. N
Los archivos y vínculos se agregan automáticamente al cuadro de diálogo del Administrador de Referencias (vínculos de ayuda, y otros se rellenan automáticamente) S El cuadro de diálogo Administrador de referencias enumera automáticamente los SDK, junto con vínculos de ayuda y la lista de dependencias del SDK. N NuGet proporciona su propio cuadro de diálogo Administrar paquetes NuGet.
El mecanismo admite varias arquitecturas. S Los SDK pueden enviar varias configuraciones. MSBuild consume los archivos adecuados para cada configuración del proyecto. N
El mecanismo admite varias configuraciones. S Los SDK pueden enviar varias configuraciones. En función de la arquitectura del proyecto, MSBuild consume los archivos adecuados para cada arquitectura de proyecto. N
El mecanismo puede especificar "no copiar". S Dependiendo de si los archivos se colocan en la carpeta \redist o en la carpeta \designtime, puede controlar qué archivos copiar en el paquete de la aplicación consumidora. N Declaras qué archivos copiar en el manifiesto del paquete.
El contenido aparece en archivos localizados. S Los documentos XML localizados en SDKs se incluyen automáticamente para una mejor experiencia durante el diseño. N
MSBuild admite el consumo de varias versiones de un SDK simultáneamente. S El SDK admite el consumo de varias versiones simultáneamente. N Esto no es una referencia. No puede tener más de una versión de archivos NuGet en el proyecto a la vez.
El mecanismo admite la especificación de marcos de destino aplicables, versiones de Visual Studio y tipos de proyecto. S El cuadro de diálogo Administrador de referencias de y el cuadro de herramientas de muestran solo los SDK que se aplican a un proyecto, de modo que los usuarios puedan elegir más fácilmente los SDK adecuados. S (parcialmente) Pivot es la plataforma de destino. No hay ningún filtrado en la interfaz de usuario. En el momento de la instalación, podría devolver un error.
El mecanismo admite la especificación de información de registro para winMD nativos. S Puede especificar la correlación entre el archivo .winmd y el archivo .dll en SDKManifest.xml. N
El mecanismo admite la especificación de dependencias en otros SDK. S El SDK solo notifica al usuario; el usuario todavía debe instalarlos y hacer referencia a ellos manualmente. S NuGet los extrae automáticamente; no se notifica al usuario.
El mecanismo se integra con conceptos de Microsoft Store, como el manifiesto de la aplicación y el identificador de marco. S El SDK debe pasar conceptos específicos de la Store para que el empaquetado y F5 funcionen correctamente con los SDK que están disponibles en la Store. N
El mecanismo se integra con la canalización de depuración de aplicaciones para aplicaciones de la Store de Windows 8.x. S El SDK debe pasar conceptos específicos de la Store para que el empaquetado y F5 funcionen correctamente con los SDK que están disponibles en la Store. S El contenido de NuGet forma parte del proyecto. No se necesita ninguna consideración especial de F5.
El mecanismo se integra con los manifiestos de las aplicaciones. S El SDK debe pasar conceptos específicos de la Store para que el empaquetado y F5 funcionen correctamente con los SDK que están disponibles en la Store. S El contenido de NuGet forma parte del proyecto. No se necesita ninguna consideración especial de F5.
El mecanismo implementa archivos que no son de referencia (por ejemplo, implementa el marco de pruebas en el que se ejecutan pruebas de aplicaciones de la Tienda Windows 8.x). S Si dejas caer los archivos en la carpeta \redist, los archivos se despliegan automáticamente. S
El mecanismo agrega automáticamente los SDK de plataforma en el IDE de Visual Studio. S Si dejas el SDK de Windows 8 o el SDK de Windows Phone en una ubicación específica con un formato específico, el SDK se integra automáticamente con todas las funciones de Visual Studio. N
El mecanismo admite una máquina de desarrollador limpia. (Es decir, no se requiere ninguna instalación, y una recuperación sencilla del control de código fuente funcionará). N Dado que hace referencia a un SDK, debe registrar su solución y el SDK por separado. Puede proteger el SDK desde las dos ubicaciones predeterminadas que no son del Registro desde las que MSBuild itera los SDK (para obtener más información, vea Crear un kit de desarrollo de software). Como alternativa, si una ubicación personalizada consta de los SDK, puede especificar el código siguiente en el archivo de proyecto:

<PropertyGroup>
  <SDKReferenceDirectoryRoot>
  C:\MySDKs
  </SDKReferenceDirectoryRoot>
</PropertyGroup>

Después, proteja los SDK en dicha ubicación.
S Puede consultar la solución y Visual Studio reconoce y actúa inmediatamente en los archivos.
Puede unirse a una gran comunidad existente de autores de paquetes. N/A La comunidad es nueva. S
Puede unirse a una gran comunidad existente de consumidores de paquetes. N/A La comunidad es nueva. S
Puede unirse a un ecosistema de asociados (galerías personalizadas, repositorios, etc.). N/A Los repositorios disponibles incluyen Visual Studio Marketplace, el Centro de descarga de Microsoft y Microsoft Store. S
El mecanismo se integra con los servidores de compilación de integración continua para la creación y el consumo de paquetes. S El SDK debe pasar la ubicación protegida (propiedad SDKReferenceDirectoryRoot) en la línea de comandos a MSBuild. S
El mecanismo admite versiones estables y preliminares del paquete. S El SDK admite la adición de referencias a varias versiones. S
El mecanismo admite la actualización automática de los paquetes instalados. S Si se incluye como VSIX o parte de las actualizaciones automáticas de Visual Studio, el SDK proporciona notificaciones automáticas. S
El mecanismo contiene un archivo .exe independiente para crear y consumir paquetes. S El SDK contiene MSBuild.exe. S
Los paquetes se pueden comprobar en el control de versiones. S No se puede registrar nada fuera del nodo de Documentos, lo que significa que es posible que los Extension SDKs no puedan registrarse. El tamaño del SDK de extensión puede ser grande. S
Puede usar una interfaz de PowerShell para crear y consumir paquetes. Y (consumo), N (creación) No hay herramientas para crear un SDK. El consumo ejecuta MSBuild en la línea de comandos. S
Puede usar un paquete de símbolos para la compatibilidad con la depuración. S Si quita los archivos .pdb del SDK, los archivos se recogen automáticamente. S
El mecanismo admite actualizaciones automáticas del administrador de paquetes. N/A El SDK se revisa con MSBuild. S
El mecanismo admite un formato de manifiesto ligero. S SDKManifest.xml admite muchos atributos, pero normalmente es necesario un subconjunto pequeño. S
El mecanismo está disponible para todas las ediciones de Visual Studio. S El SDK admite todas las ediciones de Visual Studio. S NuGet admite todas las ediciones de Visual Studio.