Creación de paquetes de .NET Standard y .NET Framework con Visual Studio 2015
Nota: Se recomienda usar Visual Studio 2017 para desarrollar bibliotecas de .NET Standard. Visual Studio 2015 puede funcionar pero las herramientas de .NET Core solo se llevaron al estado de versión preliminar. Vea Creación y publicación de un paquete con Visual Studio 2017 para trabajar con NuGet 4.x y versiones posteriores y Visual Studio 2017.
La biblioteca .NET Standard es una especificación formal de las API de .NET diseñada para estar disponible en todos los runtimes de .NET, lo que establece mayor uniformidad en el ecosistema de .NET. La biblioteca de .NET Standard define un conjunto uniforme de API de BCL (biblioteca de clases base) para que todas las plataformas de .NET lo implementen, independientemente de la carga de trabajo. Permite a los desarrolladores generar código que se pueda usar en todos los runtimes de .NET y reduce, si no las elimina, las directivas de compilación condicional específicas de la plataforma en código compartido.
En esta guía se describe la creación de un paquete NuGet destinado a la biblioteca de .NET Standard 1.4 o un paquete destinado a .NET Framework 4.6. Una biblioteca de .NET Standard 1.4 funcionará en .NET Framework 4.6.1, la Plataforma universal de Windows 10, .NET Core y Mono/Xamarin. Para más información, vea la tabla de asignación de .NET Standard (documentación de .NET). Puede elegir otra versión de la biblioteca de .NET si lo prefiere.
Requisitos previos
Visual Studio 2015 Update 3
(Solo .NET Standard) SDK de .NET Core
CLI de NuGet. Descargue la versión más reciente de nuget.exe desde nuget.org/downloads y guárdela en una ubicación de su elección. Después, agregue esa ubicación a la variable de entorno PATH si aún no está.
Nota:
nuget.exe es la propia herramienta de la CLI, no un instalador, por lo que debe asegurarse de guardar el archivo descargado desde el explorador en lugar de ejecutarlo.
Crear el proyecto de biblioteca de clases
En Visual Studio, Archivo > nuevo > Project, expanda el nodo Visual C# > Windows, seleccione Biblioteca de clases (portable), cambie el nombre a AppLogger y seleccione Aceptar.
En el cuadro de diálogo Agregar Biblioteca de clases portable que aparece, seleccione las opciones
.NET Framework 4.6
yASP.NET Core 1.0
. (Si el destino es .NET Framework, puede seleccionar las opciones que sean adecuadas).Si el destino es .NET Standard, haga clic con el botón derecho en en
AppLogger (Portable)
Explorador de soluciones, seleccione Propiedades, seleccione la pestaña Biblioteca y, después, seleccione Target .NET Platform Standard (Destino de .NET Platform Standard) en la sección Destino. Esta acción le pedirá confirmación, tras la cual podrá seleccionar.NET Standard 1.4
(u otra versión disponible) en la lista desplegable:Haga clic en la pestaña Compilar, cambie la configuración a
Release
y active la casilla de Archivo de documentación XML.Agregue el código al componente, por ejemplo:
namespace AppLogger { public class Logger { public void Log(string text) { Console.WriteLine(text); } } }
Establezca la configuración en Liberar, compile el proyecto y compruebe que los archivos DLL y XML se crean dentro de la carpeta
bin\Release
.
Crear y actualizar el archivo .nuspec
Abra un símbolo del sistema, vaya a la carpeta que contiene la carpeta
AppLogger.csproj
(que está un nivel por debajo de la ubicación del archivo.sln
) y ejecute el comandospec
de NuGet para crear el archivoAppLogger.nuspec
inicial:nuget spec
Abra
AppLogger.nuspec
en un editor y actualícelo para que coincida con lo siguiente, reemplazando SU_NOMBRE por un valor adecuado. El<id>
valor, en concreto, debe ser único en nuget.org (consulte las convenciones de nomenclatura descritas en Creación de un paquete. Tenga en cuenta que también debe actualizar las etiquetas de autor y descripción, u obtendrá un error durante el paso de empaquetado.<?xml version="1.0"?> <package > <metadata> <id>AppLogger.YOUR_NAME</id> <version>1.0.0</version> <title>AppLogger</title> <authors>YOUR_NAME</authors> <owners>YOUR_NAME</owners> <requireLicenseAcceptance>false</requireLicenseAcceptance> <description>Awesome application logging utility</description> <releaseNotes>First release</releaseNotes> <copyright>Copyright 2018 (c) Contoso Corporation. All rights reserved.</copyright> <tags>logger logging logs</tags> </metadata> </package>
Agregue ensamblados de referencia al archivo
.nuspec
, es decir, el archivo DLL de la biblioteca y el archivo XML de IntelliSense:Si el destino es .NET Standard, las entradas tendrán un aspecto similar a este:
<!-- Insert below <metadata> element --> <files> <file src="bin\Release\AppLogger.dll" target="lib\netstandard1.4\AppLogger.dll" /> <file src="bin\Release\AppLogger.xml" target="lib\netstandard1.4\AppLogger.xml" /> </files>
Si el destino es .NET Framework, las entradas tendrán un aspecto similar a este:
<!-- Insert below <metadata> element --> <files> <file src="bin\Release\AppLogger.dll" target="lib\net46\AppLogger.dll" /> <file src="bin\Release\AppLogger.xml" target="lib\net46\AppLogger.xml" /> </files>
Haga clic con el botón derecho en la solución y seleccione Compilar solución para generar todos los archivos del paquete.
Declaración de dependencias
Si tiene dependencias en otros paquetes de NuGet, muéstrelos en una lista en el elemento <dependencies>
del manifiesto con elementos <group>
. Por ejemplo, para declarar una dependencia en NewtonSoft.Json 8.0.3 o en una versión posterior, agregue lo siguiente:
<!-- Insert within the <metadata> element -->
<dependencies>
<group targetFramework="uap">
<dependency id="Newtonsoft.Json" version="8.0.3" />
</group>
</dependencies>
La sintaxis del atributo version aquí indica que la versión 8.0.3 o una versión posterior es aceptable. Para especificar distintos intervalos de versiones, vea Control de versiones de paquetes.
Agregar un archivo Léame
Cree el archivo readme.txt
, colóquelo en la carpeta raíz del proyecto y haga referencia a él en el archivo .nuspec
:
<?xml version="1.0"?>
<package >
<metadata>...
</metadata>
<files>
<file src="readme.txt" target="" />
</files>
</package>
Visual Studio muestra readme.txt
cuando el paquete se instala en un proyecto. El archivo no se muestra cuando se instala en los proyectos de .NET Core, o para paquetes que se instalan como una dependencia.
Empaquetar el componente
Con el archivo .nuspec
completado haciendo referencia a todos los archivos que se deben incluir en el paquete, está listo para ejecutar el comando pack
:
nuget pack AppLogger.nuspec
Así se genera AppLogger.YOUR_NAME.1.0.0.nupkg
. Al abrir este archivo en una herramienta como el Explorador de paquetes NuGet y expandir todos los nodos, se ve el contenido siguiente (mostrado para .NET Standard):
Sugerencia
Un archivo .nupkg
es en realidad un archivo ZIP con una extensión distinta. También puede examinar el contenido del paquete después, cambiando .nupkg
por .zip
, pero recuerde restaurar la extensión antes de cargar un paquete en nuget.org.
Para que el paquete esté disponible para otros desarrolladores, siga las instrucciones de Publicación de un paquete.
Tenga en cuenta que pack
requiere Mono 4.4.2 en Mac OS X y no funciona en los sistemas Linux. En los equipos Mac, también debe convertir los nombres de las rutas de acceso de Windows del archivo .nuspec
a las rutas de acceso de estilo Unix.
Temas relacionados
- Referencia de .nuspec
- Compatibilidad con varias versiones de .NET Framework
- Incluir propiedades y destinos de MSBuild en un paquete
- Creación de paquetes localizados
- Paquetes de símbolos
- Control de versiones del paquete
- Documentación de la biblioteca de .NET Standard
- Portabilidad a .NET Core desde .NET Framework