.NET Core - переносимая библиотека классов

В этой главе мы обсудим, что такое PCL (Portable Class Library), а также зачем нам нужен PCL. Чтобы понять эту концепцию, давайте откроем папку проекта библиотеки классов, которую мы создали в предыдущей главе.

В этой папке вы можете видеть, что в дополнение к файлам project.json и CS у нас также есть файл * .xproj, потому что Visual Studio установила тип проекта .NET Core как * .xproj вместо * .csproj.

Как упоминалось в Microsoft, * .xproj будет удален, но он все еще присутствует в предварительной версии 2. Как мы уже говорили, приложение UWP использует * .csproj.

Теперь фактически невозможно получить * .csproj для ссылки и * .xproj, и эта функциональность не будет реализована, потому что * .xproj переместится.

Поэтому вместо этого нам нужна библиотека классов, которая может использоваться совместно консольным приложением и приложением UWP, и здесь идет PCL.

Что такое PCL

Давайте теперь разберемся, что такое PCL -

  • Проект Portable Class Library позволяет вам писать и строить управляемые сборки, которые работают на нескольких платформах .NET Framework.

  • Вы можете создавать классы, содержащие код, который вы хотите использовать во многих проектах, например общую бизнес-логику, а затем ссылаться на эти классы из разных типов проектов.

  • Он также может помочь вам быстро и легко создавать кроссплатформенные приложения и библиотеки для платформ Microsoft.

  • Переносимые библиотеки классов могут помочь вам сократить время и затраты на разработку и тестирование кода.

  • Используйте этот тип проекта для написания и сборки переносимых сборок .NET Framework, а затем ссылайтесь на эти сборки из приложений, ориентированных на несколько платформ, таких как Windows, Windows Phone и т. Д.

Теперь давайте удалим созданную нами библиотеку классов из обозревателя решений. Заодно удалите его из папки Solution и далее добавьте новый элемент проекта.

Выберите Visual C# → Windows на левой панели и выберите Библиотека классов (переносимая) в средней панели.

Введите StringLibrary в поле имени и нажмите OK создать этот проект.

Теперь нам нужно выбрать целевые платформы для ссылки. Давайте на мгновение выберем Windows Universal и ASP.NET Core, а затем перенацелим. НажмитеOK.

Вы можете видеть, что он создал новый проект в формате PCF. Теперь давайте щелкнем правой кнопкой мыши проект StringLibrary в обозревателе решений и выберем «Свойства».

Щелкните Target .NET Platform Standard.

Щелкните Да; Теперь это та же библиотека классов с одним незначительным отличием. Разница в том, что он также может использоваться UWP, поскольку он содержит файл * .csproj вместо * .xproj.

Давайте теперь добавим новый класс; для этого вам нужно щелкнуть правой кнопкой мыши проект в обозревателе решений и выбратьAdd → Class...

Выберите класс на средней панели и введите StringLib.cs в поле имени, а затем нажмите Add. После добавления класса замените следующий код в файле 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); 
      } 
   } 
}

Давайте создадим этот проект переносимой библиотеки классов, и он должен скомпилироваться без ошибок. Теперь нам нужно добавить ссылку на эту переносимую библиотеку классов в наш консольный проект. Итак, разверните FirstApp, щелкните правой кнопкой мыши Ссылки и выберитеAdd Reference…

В диалоговом окне «Диспетчер ссылок» выберите StringLibrary, которая является нашим проектом переносимой библиотеки классов, а затем щелкните OK.

Вы можете видеть, что ссылка StringLibrary добавлена ​​в проект консоли, и ее также можно увидеть в файле project.json.

Теперь вы можете снова запустить приложение, и вы увидите тот же результат.

Позвольте нам теперь использовать другие методы расширения вашей переносимой библиотеки классов в вашем проекте. Та же переносимая библиотека будет использоваться и в вашем приложении UWP.