注意:建議使用 Visual Studio 2017 來開發 .NET Standard 程式庫。 可以使用 Visual Studio 2015,但 .NET Core 工具僅提供為「預覽」階段。 如需使用 NuGet 4.x+ 和 Visual Studio 2017 的資訊,請參閱使用 Visual Studio 2017 建立和發佈套件。
.NET Standard 程式庫是計劃提供所有 .NET 執行階段使用的 .NET API 正式規格,因此在 .NET 生態系統中能建立較強的一致性。 .NET Standard 程式庫定義一致的 BCL (基底類別庫) API 集合,以供所有 .NET 平台實作,而不論工作負載為何。 其可讓開發人員產生可跨所有 .NET 執行階段使用的程式碼,並減少 (如果無法消除) 共用程式碼中的平台專屬條件式編譯指示詞。
本指南引導您建立以 .NET Standard Library 1.4 為目標的 NuGet 套件,或是以 .NET Framework 4.6 為目標的套件。 .NET Standard 1.4 程式庫可用於 .NET Framework 4.6.1、Universal Windows Platform 10、.NET Core 和 Mono/Xamarin。 如需詳細資訊,請參閱 .NET Standard 對應表 (.NET 文件)。 您可以依需求選擇其他版本的 .NET Standard 程式庫。
必要條件
Visual Studio 2015 Update 3
(僅限 .NET Standard) .NET Core SDK \(英文\)
NuGet CLI。 從 nuget.org/downloads 下載最新版的 nuget.exe,並將它儲存至您選擇的位置。 如果尚未新增,則請將該位置新增至您的 PATH 環境變數。
注意
nuget.exe 本身是 CLI 工具,不是安裝程式,因此請務必從瀏覽器儲存下載的檔案,而不是執行它。
建立類別庫專案
在 [Visual Studio] 中, >>展開 [新增檔案] Project,展開[Visual C# > Windows] 節點,選取 [類別庫] ([可攜式) ],將名稱變更為 AppLogger,然後選取 [確定]。
在顯示的 [加入可攜式類別庫] 對話方塊中,選取
.NET Framework 4.6
和ASP.NET Core 1.0
的選項。 (如果目標是 .NET Framework,您可以選取任何適當的選項。)如果以 .NET Standard 為目標,請在 [方案總管] 中以滑鼠右鍵按一下
AppLogger (Portable)
,選取 [屬性],選取 [程式庫] 索引卷標,然後在 [目標]區段中選取 [目標 .NET 平臺標準]。 此動作會提示您確認,之後您就可以從下拉式清單中選取.NET Standard 1.4
(或其他可用版本):按一下 [組建] 索引標籤,將 [組態] 變更為
Release
,並核取 [XML 文件檔] 方塊。將程式碼新增至元件,例如:
namespace AppLogger { public class Logger { public void Log(string text) { Console.WriteLine(text); } } }
將組態設定為發行、建置專案,並確認 DLL 和 XML 檔案已產生在
bin\Release
資料夾內。
建立和更新 .nuspec 檔案
開啟命令提示字元,巡覽至包含
AppLogger.csproj
資料夾的資料夾 (低於.sln
檔案一階),然後執行 NuGetspec
命令以建立初始的AppLogger.nuspec
檔案:nuget spec
在編輯器中開啟
AppLogger.nuspec
,更新它使符合下列內容,以適當的值取代 YOUR_NAME。 具體來說,值<id>
在 nuget.org (必須是唯一的,請參閱 建立套件中所述的命名慣例。 另請注意,您也必須更新作者和描述標記,否則會在封裝步驟期間發生錯誤。<?xml version="1.0"?> <package > <metadata> <id>AppLogger.YOUR_NAME</id> <version>1.0.0</version> <title>AppLogger</title> <authors>YOUR_NAME</authors> <owners>YOUR_NAME</owners> <requireLicenseAcceptance>false</requireLicenseAcceptance> <description>Awesome application logging utility</description> <releaseNotes>First release</releaseNotes> <copyright>Copyright 2018 (c) Contoso Corporation. All rights reserved.</copyright> <tags>logger logging logs</tags> </metadata> </package>
將參考組件新增至
.nuspec
檔案,也就是程式庫的 DLL 和 IntelliSense XML 檔案:如果目標是 .NET Standard,項目會顯示如下:
<!-- Insert below <metadata> element --> <files> <file src="bin\Release\AppLogger.dll" target="lib\netstandard1.4\AppLogger.dll" /> <file src="bin\Release\AppLogger.xml" target="lib\netstandard1.4\AppLogger.xml" /> </files>
如果目標是 .NET Framework,項目會顯示如下:
<!-- Insert below <metadata> element --> <files> <file src="bin\Release\AppLogger.dll" target="lib\net46\AppLogger.dll" /> <file src="bin\Release\AppLogger.xml" target="lib\net46\AppLogger.xml" /> </files>
以滑鼠右鍵按一下解決方案,然後選取 [組建方案] 產生套件的所有檔案。
正在宣告相依性
如有其他 NuGet 套件的任何相依性,請使用 <group>
項目在資訊清單的 <dependencies>
項目中加以列出。 例如,若要宣告對 NewtonSoft.Json 8.0.3 或更新版本的相依性,請新增下列內容:
<!-- Insert within the <metadata> element -->
<dependencies>
<group targetFramework="uap">
<dependency id="Newtonsoft.Json" version="8.0.3" />
</group>
</dependencies>
version 屬性的語法在此表示接受該版本 8.0.3 或更新版本。 若要指定不同的版本範圍,請參閱套件版本控制。
新增讀我檔案
請建立您的 readme.txt
檔案,將其置於專案根資料夾中,並在 .nuspec
檔案中加以參考:
<?xml version="1.0"?>
<package >
<metadata>...
</metadata>
<files>
<file src="readme.txt" target="" />
</files>
</package>
當套件安裝至專案中時,Visual Studio 會顯示 readme.txt
。 安裝至 .NET Core 專案時,或對於已安裝為相依性的套件,檔案則不會顯示。
封裝元件
只要已完成的 .nuspec
參考您需要包含在套件中的所有檔案,就可隨時執行 pack
命令:
nuget pack AppLogger.nuspec
這會產生 AppLogger.YOUR_NAME.1.0.0.nupkg
。 在 NuGet 套件總管 \(英文\) 之類的工具中開啟此檔案,並展開所有節點,您會看到以下內容 (顯示的是 .NET Standard):
提示
.nupkg
檔案只是一個使用不同副檔名的 ZIP 檔。 然後,您也可以將 .nupkg
變更為 .zip
來檢查套件內容,但是請記住要先還原副檔名,再將套件上傳至 nuget.org。
若要讓您的套件可供其他開發人員使用,請遵循 發佈套件的指示。
請注意,pack
在 Mac OS X 上需要 Mono 4.4.2,而且無法在 Linux 系統上運作。 在 Mac 上,您也必須將 .nuspec
檔案中的 Windows 路徑名稱轉換成 Unix 模式路徑。