dotnet pack

本文 適用于: ✔️ .net CORE 2.x SDK 和更新版本

Name

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

Description

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

如果您想要產生包含 debug 符號的封裝,您有兩個可用的選項:

  • --include-symbols -它會建立符號套件。
  • --include-source -它會在包含來源檔案的 src 資料夾內建立符號套件。

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

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

注意

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

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

Web 專案預設無法封裝。 若要覆寫預設行為,請將下列屬性新增至您的 .csproj 檔案:

<PropertyGroup>
   <IsPackable>true</IsPackable>
</PropertyGroup>

隱含還原

您不必執行, dotnet restore 因為它是由所有需要進行還原的命令(例如 dotnet newdotnet builddotnet run 、、 dotnet test dotnet 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 套件的 debug 符號。 來源檔案會包含在 src 符號套件內的資料夾中。

  • --include-symbols

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

  • --interactive

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

  • --no-build

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

  • --no-dependencies

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

  • --no-restore

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

  • --nologo

    不要顯示程式啟始橫幅或著作權訊息。 自 .NET Core 3.0 SDK 起提供。

  • -o|--output <OUTPUT_DIRECTORY>

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

  • --runtime <RUNTIME_IDENTIFIER>

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

  • -s|--serviceable

    在套件中設定可提供服務的旗標。 如需詳細資訊,請參閱.net Blog: .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 。 此屬性在封裝版本上的影響取決於 Version 和屬性的值,如下 VersionPrefix 表所示:

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

    如果您想要使用 --version-suffix ,請指定 VersionPrefix 專案檔中的,而不 Version 是。 例如,如果 VersionPrefix 是, 0.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
    

    如需如何使用、和的詳細資訊 NuspecFile NuspecBasePath NuspecProperties ,請參閱下列資源: