在本章中,我们将讨论什么是PCL(可移植类库),以及我们为什么需要PCL.要理解这个概念,让我们打开我们在上一章中创建的类库项目文件夹.
在这个文件夹中,您可以看到除了project.json和CS文件之外我们还有* .xproj文件,这是因为Visual Studio将.NET Core项目类型设置为* .xproj而不是* .csproj.
正如微软所说,* .xproj将会消失,但它仍然在预览2工具中.正如我们所述,UWP应用程序使用* .csproj.
现在实际上不可能将* .csproj引用到* .xproj并且该功能不会被实现,因为* .xproj将会移出.
所以相反,我们需要一个可以在控制台应用程序和UWP应用程序之间共享的类库,这里有PCL.
现在让我们来吧了解PCL是什么&减去;
可移植类库项目使您能够编写和构建可在其上工作的托管程序集一个.NET Framework平台.
您可以创建包含您希望在多个项目中共享的代码的类,例如共享业务逻辑,然后引用这些类来自不同类型的项目.
它还可以帮助您为Microsoft平台构建跨平台的应用程序和库ickly and easy.
便携式类库可以帮助您减少开发和测试代码的时间和成本.
使用此项目类型编写和构建可移植的.NET Framework程序集,然后从面向多个平台(如Windows和Windows Phone等)的应用程序引用这些程序集.
现在让我们从解决方案资源管理器中删除我们创建的类库.同时,从Solution文件夹中删除它,并进一步添加一个新的项目项.
选择 Visual C# → 左窗格中的Windows 模板,并在中间窗格中选择类库(可移植).
在名称字段中输入StringLibrary,然后单击确定到创建这个项目.
现在我们需要选择目标框架参考.让我们暂时选择Windows Universal和ASP.NET Core,然后我们将重新定位它.点击确定.
你可以看到它已经创建了一个PCF格式的新项目.现在让我们在解决方案资源管理器中右键单击StringLibrary项目并选择Properties.
单击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并选择添加引用...
在"参考管理器"对话框中,选择StringLibrary,它是我们的可移植类库项目,然后单击确定.
您可以看到StringLibrary引用已添加到控制台项目中,可以在project.json文件.
您现在可以再次运行该应用程序,您将看到相同的输出.
现在让我们在项目中使用便携式类库的其他扩展方法.同样的可移植库也将在您的UWP应用程序中使用.