dotnet pack

本文適用于: ✔️.NET Core 3.1 SDK 和更新版本

名稱

dotnet pack - 將程式碼封裝到 NuGet 套件。

概要

dotnet pack [<PROJECT>|<SOLUTION>] [-c|--configuration <CONFIGURATION>]
    [--force] [--include-source] [--include-symbols] [--interactive]
    [--no-build] [--no-dependencies] [--no-restore] [--nologo]
    [-o|--output <OUTPUT_DIRECTORY>] [--runtime <RUNTIME_IDENTIFIER>]
    [-s|--serviceable] [-v|--verbosity <LEVEL>]
    [--version-suffix <VERSION_SUFFIX>]

dotnet pack -h|--help

描述

dotnet pack 命令會建置專案,並建立 NuGet 套件。 此命令的結果是 NuGet 套件 (,也就是 .nupkg 檔案) 。

如果您想要產生包含偵錯符號的套件,您有兩個選項可供使用:

  • --include-symbols - 它會建立符號套件。
  • --include-source - 它會使用包含原始程式檔的資料夾來 src 建立符號套件。

封裝專案的 NuGet 相依性會新增至 .nuspec 檔案,因此在安裝套件時可以正確地解析它們。 如果封裝的專案具有其他專案的參考,則封裝中不會包含其他專案。 目前,如果您有專案對專案相依性,則必須一個專案各一個套件。

dotnet pack 預設會先建置專案。 如果您想要避免這種行為,請傳遞 --no-build 選項。 這個選項通常適用於您知道先前剛建立程式碼的持續整合 (CI) 組建案例。

注意

在某些情況下,無法執行隱含組建。 設定時 GeneratePackageOnBuild 可能會發生這種情況,以避免建置和套件目標之間的迴圈相依性。 如果有鎖定的檔案或其他問題,組建也可能失敗。

您可以提供 MSBuild 屬性給 dotnet pack 命令來壓縮程序。 如需詳細資訊,請參閱 NuGet 套件目標屬性MSBuild Command-Line參考[範例] 區段示範如何針對幾個不同的案例使用 MSBuild -p 參數。

注意

Web 專案無法封裝。

隱含還原

您不需要執行 dotnet restore ,因為它會由需要還原的所有命令隱含執行,例如 dotnet newdotnet build 、、 dotnet rundotnet testdotnet publishdotnet pack 。 若要停用隱含還原,請使用 --no-restore 選項。

在某些 dotnet restore 明確還原有意義的案例中,命令仍然很有用,例如Azure DevOps Services中的持續整合組建,或在需要明確控制還原何時發生的組建系統中。

如需如何管理 NuGet 摘要的資訊,請參閱dotnet restore

此命令支援 dotnet restore 以長格式傳遞 (的選項,例如) --source 。 不支援簡短形式選項,例如 -s

工作負載資訊清單下載

當您執行此命令時,它會起始工作負載廣告資訊清單的非同步背景下載。 如果此命令完成時仍執行下載,則會停止下載。 如需詳細資訊,請參閱 廣告資訊清單

引數

PROJECT | SOLUTION

要封裝的專案或方案。 它是 csproj、vbproj 或 fsproj 檔案的路徑,或是方案檔或目錄的路徑。 如果未指定,命令會搜尋目前目錄的專案或方案檔。

選項

  • -c|--configuration <CONFIGURATION>

    定義組建組態。 大部分專案的預設值是 Debug ,但您可以覆寫專案中的組建組態設定。

  • --force

    即使最後的還原成功,仍強制解析所有相依性。 指定這個旗標等同於刪除 project.assets.json 檔案。

  • -?|-h|--help

    列印如何使用 命令的描述。

  • --include-source

    除了輸出目錄中的一般 NuGet 套件之外,還包含偵錯符號 NuGet 套件。 來源檔案會包含在 src 符號套件內的 資料夾中。

  • --include-symbols

    除了輸出目錄中的一般 NuGet 套件之外,還包含偵錯符號 NuGet 套件。

  • --interactive

    可讓命令停止,並等候使用者輸入或進行動作。 例如完成驗證。 自 .NET Core 3.0 SDK 起提供。

  • --no-build

    不會在封裝前建置專案。 選項也會隱含設定 --no-restore 旗標。

  • --no-dependencies

    忽略專案對專案參考,並且只還原根專案。

  • --no-restore

    執行命令時,不會執行隱含還原。

  • --nologo

    不要顯示程式啟始橫幅或著作權訊息。

  • -o|--output <OUTPUT_DIRECTORY>

    將已建置的套件放置在指定的目錄中。

  • --runtime <RUNTIME_IDENTIFIER>

    指定要還原套件的目標執行階段。 如需執行階段識別項 (RID) 清單,請參閱 RID 目錄

  • -s|--serviceable

    在套件中設定可提供服務的旗標。 如需詳細資訊,請參閱.NET 部落格:.NET Framework 4.5.1 支援適用于 .NET NuGet 程式庫的 Microsoft 安全性更新

  • -v|--verbosity <LEVEL>

    設定命令的詳細資訊層級。 允許的值為 q[uiet]m[inimal]n[ormal]d[etailed]diag[nostic]。 如需詳細資訊,請參閱LoggerVerbosity

  • --version-suffix <VERSION_SUFFIX>

    定義 MSBuild 屬性的值 VersionSuffix 。 此屬性對套件版本的影響取決於 和 VersionPrefix 屬性的值 Version ,如下表所示:

    具有值的屬性 套件版本
    1.0.0
    Version $(Version)
    僅限 VersionPrefix $(VersionPrefix)
    僅限 VersionSuffix 1.0.0-$(VersionSuffix)
    VersionPrefixVersionSuffix $(VersionPrefix)-$(VersionSuffix)

    如果您想要使用 --version-suffix ,請在專案檔中指定 VersionPrefix 而非 Version 。 例如,如果 是 VersionPrefix0.1.2 且您傳遞 --version-suffix rc.1dotnet pack ,則套件版本會是 0.1.2-rc.1

    如果 Version 具有值,而且您傳遞 --version-suffixdotnet pack ,則會忽略為 --version-suffix 指定的值。

範例

  • 封裝目前目錄中的專案:

    dotnet pack
    
  • 封裝 app1 專案:

    dotnet pack ~/projects/app1/project.csproj
    
  • 封裝目前目錄中的專案,並將產生的套件放置到 nupkgs 資料夾中:

    dotnet pack --output nupkgs
    
  • 將目前目錄中的專案封裝到 nupkgs 資料夾,並略過建置步驟︰

    dotnet pack --no-build --output nupkgs
    
  • .csproj 檔案中將專案的版本尾碼設定為 <VersionSuffix>$(VersionSuffix)</VersionSuffix>,封裝目前的專案並使用指定尾碼更新產生的套件版本︰

    dotnet pack --version-suffix "ci-1234"
    
  • 使用 PackageVersion MSBuild 屬性將封裝版本設定為 2.1.0

    dotnet pack -p:PackageVersion=2.1.0
    
  • 將專案針對特定目標 Framework 進行封裝:

    dotnet pack -p:TargetFrameworks=net45
    
  • 封裝專案並使用特定執行時間 (Windows 10) 進行還原作業:

    dotnet pack --runtime win10-x64
    
  • 使用 .nuspec 檔案封裝專案:

    dotnet pack ~/projects/app1/project.csproj -p:NuspecFile=~/projects/app1/project.nuspec -p:NuspecBasePath=~/projects/app1/nuget
    

    如需如何使用 NuspecFileNuspecBasePathNuspecProperties 的詳細資訊,請參閱下列資源: