.NET Core: biblioteca de clases portátil

En este capítulo, discutiremos qué es PCL (Portable Class Library) y también por qué necesitamos PCL. Para entender este concepto, abramos la carpeta del proyecto de la biblioteca de clases que hemos creado en el capítulo anterior.

En esta carpeta, puede ver que además de los archivos project.json y CS, también tenemos el archivo * .xproj, y eso se debe a que Visual Studio configuró el tipo de proyecto .NET Core como * .xproj en lugar de * .csproj.

Como lo mencionó Microsoft, * .xproj desaparecerá, pero todavía está aquí en las herramientas de vista previa 2. Como hemos cubierto, la aplicación para UWP usa * .csproj.

Ahora, en realidad, no es factible hacer que * .csproj haga referencia y * .xproj y esa funcionalidad no se implementará porque * .xproj se moverá.

Entonces, en cambio, necesitamos una biblioteca de clases que se pueda compartir entre la aplicación de consola y la aplicación para UWP y aquí viene PCL.

Que es PCL

Entendamos ahora qué es PCL:

  • El proyecto Biblioteca de clases portátil le permite escribir y crear ensamblados administrados que funcionan en más de una plataforma .NET Framework.

  • Puede crear clases que contengan código que desee compartir en muchos proyectos, como la lógica empresarial compartida, y luego hacer referencia a esas clases desde diferentes tipos de proyectos.

  • También puede ayudarlo a crear aplicaciones y bibliotecas multiplataforma para plataformas Microsoft de forma rápida y sencilla.

  • Las bibliotecas de clases portátiles pueden ayudarlo a reducir el tiempo y los costos de desarrollo y prueba del código.

  • Use este tipo de proyecto para escribir y compilar ensamblados de .NET Framework portátiles y luego hacer referencia a esos ensamblados desde aplicaciones que tienen como destino múltiples plataformas, como Windows y Windows Phone, etc.

Eliminemos ahora la biblioteca de clases que hemos creado desde el Explorador de soluciones. Al mismo tiempo, elimínelo de la carpeta Solución y agregue un nuevo elemento de proyecto.

Selecciona el Visual C# → Windows plantilla en el panel izquierdo y seleccione Biblioteca de clases (portátil) en el panel central.

Ingrese StringLibrary en el campo de nombre y haga clic en OK para crear este proyecto.

Ahora tenemos que seleccionar los marcos de destino para hacer referencia. Seleccionemos Windows Universal y ASP.NET Core por un momento y luego lo reorientaremos. Hacer clicOK.

Puede ver que ha creado un nuevo proyecto en formato PCF. Ahora hagamos clic con el botón derecho en el proyecto StringLibrary en el Explorador de soluciones y seleccione Propiedades.

Haga clic en Target .NET Platform Standard.

Haga clic en Sí; ahora es la misma biblioteca de clases con una pequeña diferencia. La diferencia es que UWP también puede usarlo, porque contiene el archivo * .csproj en lugar de * .xproj.

Agreguemos ahora una nueva clase; para esto, debe hacer clic derecho en el proyecto en el Explorador de soluciones y seleccionarAdd → Class...

Seleccione la clase en el panel central e ingrese StringLib.cs en el campo de nombre y luego haga clic en Add. Una vez agregada la clase, reemplace el siguiente código en el archivo StringLib.cs.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
  
namespace StringLibrary { 
   public static class StringLib { 
      public static bool StartsWithUpper(this String str) { 
         if (String.IsNullOrWhiteSpace(str)) 
            return false; 
         Char ch = str[0]; 
         return Char.IsUpper(ch); 
      } 
      public static bool StartsWithLower(this String str) { 
         if (String.IsNullOrWhiteSpace(str)) 
            return false; 
         Char ch = str[0]; 
         return Char.IsLower(ch); 
      } 
      public static bool StartsWithNumber(this String str) { 
         if (String.IsNullOrWhiteSpace(str)) 
            return false; 
         Char ch = str[0]; 
         return Char.IsNumber(ch); 
      } 
   } 
}

Construyamos este proyecto de biblioteca de clases portátil y debería compilarse sin errores. Ahora necesitamos agregar una referencia de esta biblioteca de clases portátil en nuestro proyecto de consola. Entonces, expanda FirstApp y haga clic derecho en Referencias y seleccioneAdd Reference…

En el cuadro de diálogo Administrador de referencias, seleccione StringLibrary, que es nuestro proyecto de biblioteca de clases portátil, y luego haga clic en OK.

Puede ver que la referencia de StringLibrary se agrega al proyecto de la consola y también se puede ver en el archivo project.json.

Ahora puede ejecutar la aplicación nuevamente y verá el mismo resultado.

Usemos ahora los otros métodos de extensión de su biblioteca de clases portátil en su proyecto. La misma biblioteca portátil también se consumirá en su aplicación para UWP.