.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.