В этой главе мы обсудим, что такое 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 и т. Д.
Проект Portable Class Library позволяет создавать и создавать управляемые сборки, которые работают на нескольких платформах .NET Framework.
Вы можете создавать классы, которые содержат код, который вы хотите совместно использовать во многих проектах, например разделяемую бизнес-логику, а затем ссылаться на эти классы из разных типов проектов.
Он также может помочь вам быстро и легко создавать кроссплатформенные приложения и библиотеки для платформ Microsoft.
Переносимые библиотеки классов могут помочь вам сократить время и затраты на разработку и тестирование кода.
Используйте этот тип проекта для написания и сборки переносимых сборок .NET Framework, а затем ссылайтесь на эти сборки из приложений, предназначенных для нескольких платформ, таких как Windows и Windows Phone и т. Д.
Теперь давайте удалим созданную нами библиотеку классов из обозревателя решений. Одновременно удалите его из папки Solution и добавьте новый элемент проекта.
Выберите шаблон Visual C # → Windows на левой панели и выберите Class Library (Portable) на средней панели.
Введите StringLibrary в поле имени и нажмите OK, чтобы создать этот проект.
Теперь нам нужно выбрать целевые рамки для ссылки. Давайте на мгновение выберем Windows Universal и ASP.NET Core, а затем перенастроим его. Нажмите ОК .
Вы можете видеть, что он создал новый проект в формате PCF. Теперь давайте щелкните правой кнопкой мыши по проекту StringLibrary в обозревателе решений и выберите Свойства.
Нажмите на Target .NET Platform Standard.
Нажмите Да; теперь это та же библиотека классов с одним небольшим отличием. Разница в том, что он также может быть использован UWP, поскольку он содержит файл * .csproj вместо * .xproj.
Давайте теперь добавим новый класс; для этого вам нужно щелкнуть правой кнопкой мыши проект в обозревателе решений и выбрать Добавить → Класс …
Выберите класс в средней панели и введите StringLib.cs в поле имени, а затем нажмите кнопку « Добавить» . После добавления класса замените следующий код в файле 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, щелкните правой кнопкой мыши на References и выберите Add Reference…
В диалоговом окне «Диспетчер ссылок» выберите «StringLibrary», который представляет собой проект переносимой библиотеки классов, и нажмите « ОК» .
Вы можете видеть, что ссылка на StringLibrary добавлена в консольный проект, и это также можно увидеть в файле project.json.
Теперь вы можете снова запустить приложение, и вы увидите тот же результат.
Позвольте нам теперь использовать другие методы расширения вашей переносимой библиотеки классов в вашем проекте. Та же портативная библиотека будет использоваться и в вашем приложении UWP.