¿Cómo empacar una biblioteca .NET dirigida a la plataforma universal de Windows?

¿Cómo puedo empaquetar una biblioteca de Universal Windows Platform en una forma moderna de propósito general para su publicación a través de NuGet? Supongamos que tengo un único ensamblado AnyCPU escrito en C # que exporta algunos códigos y controles de usuario XAML.

Esta es una serie de preguntas y respuestas que documentan mis hallazgos sobre el tema de la creación moderna de paquetes NuGet, centrándose especialmente en los cambios introducidos con NuGet 3. Puede que también le interesen algunas preguntas relacionadas:

  • ¿Cómo empacar una biblioteca .NET Framework?
  • ¿Cómo empacar una biblioteca .NET portátil que se dirige a .NET Core?
  • ¿Cómo se puede empaquetar una biblioteca .NET que tenga como objective .NET Framework y Universal Windows Platform e incluya funcionalidades específicas de la plataforma?
  • ¿Cómo empacar una biblioteca .NET multi-architecture que apunta a la Plataforma Universal de Windows?
  • ¿Cómo empacar una biblioteca .NET que apunta a la plataforma universal de Windows y depende de los SDK de extensión de Visual Studio?

Esta respuesta se basa en los principios utilizados para el paquete de bibliotecas dirigidas a .NET Framework . Lea primero la respuesta vinculada para comprender mejor lo siguiente.

Primero debe marcar la checkbox “Generar el diseño de la biblioteca” en la configuración de comstackción del proyecto. Sin esto, no será posible usar los controles de usuario XAML exportados por su biblioteca. Asegúrese de aplicar esta configuración para todas las configuraciones y architectures de comstackción.

Además de los 3 activos básicos (ver respuesta vinculada anteriormente), también deberá empaquetar los siguientes activos adicionales de su directorio de salida de comstackción:

  • MyUwpLibrary.pri
  • Subdirectorio MyUwpLibrary

Estos recursos adicionales son necesarios para hacer uso de los controles de usuario XAML exportados por su ensamblado. Siempre incluya estos recursos, incluso si aún no exporta ningún archivo XAML de su biblioteca; puede hacerlo un día y será difícil recordarlo más adelante.

Para publicar la biblioteca UWP, debe crear un paquete NuGet con la siguiente estructura:

\---lib \---uap10.0 | MyUwpLibrary.dll | MyUwpLibrary.pdb | MyUwpLibrary.pri | MyUwpLibrary.xml | \---MyUwpLibrary HelloWorld.xaml MyUwpLibrary.xr.xml 

Si está familiarizado con la publicación de la biblioteca .NET Framework, esto debería parecer bastante familiar y directo. Puede usar la siguiente plantilla para su archivo nuspec:

    Example.MyUwpLibrary 1.0.0 Firstname Lastname Example of a UWP library that exports a user control.          

¡Eso es todo! Recuerde construir su solución usando la configuración de Release antes de crear el paquete NuGet. Para obtener más información, consulte la respuesta sobre el empaquetado de una biblioteca de .NET Framework, vinculada anteriormente.

Una biblioteca de muestra y los archivos de embalaje relevantes están disponibles en GitHub . La solución correspondiente a esta respuesta es SimpleUwpLibrary.