- .NET Core 教程
- .NET Core - 首頁
- .NET Core - 概述
- .NET Core - 先決條件
- .NET Core - 環境設定
- .NET Core - 開始入門
- .NET Core - 數值計算
- .NET Core - 垃圾回收
- .NET Core - 程式碼執行
- .NET Core - 模組化
- .NET Core - 專案檔案
- .NET Core - 包引用
- 使用 .NET Core 建立 UWP 應用
- .NET Core - MSBuild
- .NET Core - 元包 (Metapackage)
- Windows 執行時和擴充套件 SDK
- 建立 .NET Standard 庫
- .NET Core - 可移植類庫 (Portable Class Library)
- 向庫新增引用
- 共享 .NET Core 庫
- 建立 Xamarin.Forms 專案
- .NET Core - PCL 疑難解答
- .NET Core - 建立測試專案
- 在 Visual Studio 中執行測試
- .NET Core - 測試庫
- 託管可擴充套件性框架 (Managed Extensibility Framework)
- .NET Core - SDK
- .NET Core - MSBuild 和 project.json
- 還原和構建以及 MSBuild
- .NET Core - 遷移
- .NET Core 有用資源
- .NET Core - 快速指南
- .NET Core - 有用資源
- .NET Core - 討論
.NET Core - 可移植類庫 (Portable Class Library)
在本章中,我們將討論什麼是 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 等)的應用中引用這些程式集。
現在讓我們從解決方案資源管理器中刪除我們建立的類庫。同時,將其從解決方案資料夾中刪除,然後新增一個新的專案項。
在左側窗格中選擇 **Visual C# → Windows** 模板,在中間窗格中選擇類庫 (Portable)。
在名稱欄位中輸入 StringLibrary,然後單擊 **確定** 建立此專案。
現在我們需要選擇要引用的目標框架。讓我們暫時選擇 Windows 通用和 ASP.NET Core,然後我們將重新定位它。單擊 **確定**。
您會看到它已建立了一個新的 PCF 格式的專案。現在讓我們右鍵單擊解決方案資源管理器中的 StringLibrary 專案,然後選擇屬性。
單擊目標 .NET 平臺標準。
單擊是;它現在是同一個類庫,只有一個細微的差別。不同之處在於它也可以被 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 並右鍵單擊引用,然後選擇 **新增引用…**
在引用管理器對話方塊中,選擇 StringLibrary(我們的可移植類庫專案),然後單擊 **確定**。
您可以看到 StringLibrary 引用已新增到控制檯專案中,並且它也可以在 project.json 檔案中看到。
您現在可以再次執行應用程式,您將看到相同的輸出。
現在讓我們在專案中使用可移植類庫的其他擴充套件方法。同一個可移植庫也將在您的 UWP 應用程式中使用。