.NET Core - 可移植类库


在本章中,我们将讨论什么是 PCL(可移植类库),以及为什么需要 PCL。为了理解这个概念,让我们打开在上一章中创建的类库项目文件夹。

聚己内酯

在此文件夹中,您可以看到除了project.json和CS文件之外,我们还有*.xproj文件,这是因为Visual Studio将.NET Core项目类型设置为*.xproj而不是*.csproj。

正如 Microsoft 所提到的,*.xproj 将消失,但它仍然存在于预览版 2 工具中。正如我们所讨论的,UWP 应用程序使用 *.csproj。

工装

现在,获取 *.csproj 来引用和 *.xproj 实际上是不可行的,并且该功能不会实现,因为 *.xproj 将移出。

因此,我们需要一个可以在控制台应用程序和 UWP 应用程序之间共享的类库,这就是 PCL。

什么是PCL

现在让我们了解 PCL 是什么 -

  • 可移植类库项目使您能够编写和构建在多个 .NET Framework 平台上工作的托管程序集。

  • 您可以创建包含希望在多个项目之间共享的代码(例如共享业务逻辑)的类,然后从不同类型的项目中引用这些类。

  • 它还可以帮助您快速轻松地为 Microsoft 平台构建跨平台应用程序和库。

  • 可移植类库可以帮助您减少开发和测试代码的时间和成本。

  • 使用此项目类型编写和构建可移植的 .NET Framework 程序集,然后从面向多个平台(例如 Windows 和 Windows Phone 等)的应用程序引用这些程序集。

现在让我们删除从解决方案资源管理器中创建的类库。同时,将其从Solution文件夹中删除,并进一步添加新的项目项。

消除

在左侧窗格中选择Visual C# → Windows模板,然后在中间窗格中选择类库(便携式)。

在名称字段中输入 StringLibrary,然后单击“确定”以创建此项目。

字符串库

现在我们需要选择要引用的目标框架。让我们暂时选择 Windows Universal 和 ASP.NET Core,然后我们将重新定位它。单击“确定”

重新定位

可以看到它已经创建了一个PCF格式的新项目。现在,我们在解决方案资源管理器中右键单击 StringLibrary 项目,然后选择“属性”。

特性

单击“目标 .NET 平台标准”。

目标

单击是;现在它是同一个类库,只有一点点不同。不同之处在于它也可以被 UWP 使用,因为它包含 *.csproj 文件而不是 *.xproj。

类库

现在让我们添加一个新类;为此,您需要在解决方案资源管理器中右键单击项目并选择添加 → 类...

添加新班级

在中间窗格中选择类,并在名称字段中输入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 并右键单击引用并选择添加引用...

参考

在“引用管理器”对话框中,选择“StringLibrary”,这是我们的可移植类库项目,然后单击“确定”

图书馆项目

您可以看到 StringLibrary 引用已添加到控制台项目中,并且也可以在 project.json 文件中看到。

现在您可以再次运行该应用程序,您将看到相同的输出。

运行应用程序

现在让我们在项目中使用可移植类库的其他扩展方法。您的 UWP 应用程序也将使用相同的可移植库。