.NET Core - 可移植類庫 (Portable Class Library)



在本章中,我們將討論什麼是 PCL(可移植類庫),以及為什麼我們需要 PCL。為了理解這個概念,讓我們開啟我們在上一章建立的類庫專案資料夾。

PCL

在這個資料夾中,除了 project.json 和 CS 檔案外,我們還有一個 *.xproj 檔案,這是因為 Visual Studio 將 .NET Core 專案型別設定為 *.xproj 而不是 *.csproj。

正如 Microsoft 所提到的,*.xproj 將會被淘汰,但在預覽版 2 工具中仍然存在。正如我們所瞭解的那樣,UWP 應用程式使用 *.csproj。

Tooling

現在實際上不可能讓 *.csproj 引用 *.xproj,並且不會實現該功能,因為 *.xproj 將會被移除。

所以,我們需要一個可以在控制檯應用和 UWP 應用之間共享的類庫,這就是 PCL 的作用。

什麼是 PCL?

現在讓我們瞭解一下什麼是 PCL:

  • 可移植類庫專案使您可以編寫和構建可在多個 .NET Framework 平臺上執行的託管程式集。

  • 您可以建立包含希望在多個專案中共享的程式碼(例如共享業務邏輯)的類,然後從不同型別的專案中引用這些類。

  • 它還可以幫助您快速輕鬆地為 Microsoft 平臺構建跨平臺應用和庫。

  • 可移植類庫可以幫助您減少開發和測試程式碼的時間和成本。

  • 使用此專案型別編寫和構建可移植 .NET Framework 程式集,然後從針對多個平臺(例如 Windows 和 Windows Phone 等)的應用中引用這些程式集。

現在讓我們從解決方案資源管理器中刪除我們建立的類庫。同時,將其從解決方案資料夾中刪除,然後新增一個新的專案項。

Remove

在左側窗格中選擇 **Visual C# → Windows** 模板,在中間窗格中選擇類庫 (Portable)。

在名稱欄位中輸入 StringLibrary,然後單擊 **確定** 建立此專案。

StringLibrary

現在我們需要選擇要引用的目標框架。讓我們暫時選擇 Windows 通用和 ASP.NET Core,然後我們將重新定位它。單擊 **確定**。

retarget

您會看到它已建立了一個新的 PCF 格式的專案。現在讓我們右鍵單擊解決方案資源管理器中的 StringLibrary 專案,然後選擇屬性。

Properties

單擊目標 .NET 平臺標準。

Target

單擊是;它現在是同一個類庫,只有一個細微的差別。不同之處在於它也可以被 UWP 使用,因為它包含 *.csproj 檔案而不是 *.xproj 檔案。

class library

現在讓我們新增一個新類;為此,您需要右鍵單擊解決方案資源管理器中的專案,然後選擇 **新增 → 類…**

add new class

在中間窗格中選擇類,在名稱欄位中輸入 **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(我們的可移植類庫專案),然後單擊 **確定**。

Library project

您可以看到 StringLibrary 引用已新增到控制檯專案中,並且它也可以在 project.json 檔案中看到。

您現在可以再次執行應用程式,您將看到相同的輸出。

Run Application

現在讓我們在專案中使用可移植類庫的其他擴充套件方法。同一個可移植庫也將在您的 UWP 應用程式中使用。

廣告
© . All rights reserved.