pack 命令 (NuGet CLI)

適用於: 套件建立 • 支援的版本: 2.7+

根據指定的 .nuspec 或項目檔建立 NuGet 套件。 命令 dotnet pack (請參閱 dotnet Commands) 和 msbuild -t:pack (請參閱 MSBuild 目標) 可用來做為替代專案。

重要

針對 PackageReference 型專案使用 dotnet packmsbuild -t:pack 從 NuGet 6.5+版開始,嘗試封裝這些項目類型時,pack 命令將會 發生錯誤 。 舊版會嘗試封裝,但產生的套件可能不正確。 在Mono下,不支援從項目檔建立套件。 您也需要將檔案中的 .nuspec 非本機路徑調整為 Unix 樣式路徑,因為nuget.exe不會轉換 Windows pathnames 本身。

使用方式

nuget pack <nuspecPath | projectPath> [options] [-Properties ...]

其中 <nuspecPath><projectPath> 分別指定 .nuspec 或項目檔。

選項。

  • -BasePath

    設定 .nuspec 檔案中定義的檔案基底路徑。

  • -Build

    指定在建置封裝之前應該建置專案。

  • -ConfigFile

    要套用的 NuGet 組態檔。 如果未指定, %AppData%\NuGet\NuGet.Config 則會使用 (Windows) 或 ~/.nuget/NuGet/NuGet.Config~/.config/NuGet/NuGet.Config (Mac/Linux)。

  • -Exclude

    指定建立封裝時要排除的一或多個通配符模式。 若要指定多個模式,請重複 -Exclude 旗標。 請參閱以下範例。

  • -ExcludeEmptyDirectories

    在建置封裝時,防止包含空的目錄。

  • -ForceEnglishOutput

    (3.5+) 強制nuget.exe使用非變異的英文文化特性來執行。

  • -?|-help

    顯示命令的說明資訊。

  • -IncludeReferencedProjects

    指出建置的套件應該包含參考的專案作為相依性或封裝的一部分。 如果參考的專案有與專案同名的對應 .nuspec 檔案,則會將參考的專案新增為相依性。 否則,參考的專案會新增為封裝的一部分。

  • -InstallPackageToOutputPath

    指定命令是否應該準備套件輸出目錄,以支援共用為摘要。

  • -MinClientVersion

    設定所建立套件的minClientVersion屬性。 此值會覆寫檔案中.nuspec現有 minClientVersion 屬性值(如果有的話)。

  • -MSBuildPath

    (4.0+) 指定要與 指令搭配使用的 MSBuild 路徑,其優先順序高於 -MSBuildVersion

  • -MSBuildVersion

    (3.2+) 指定要與此命令搭配使用的 MSBuild 版本。 支援的值為 4、12、14、15.1、15.3、15.4、15.5、15.6、15.7、15.8、15.9。 根據預設,會挑選路徑中的 MSBuild,否則會預設為最高安裝的 MSBuild 版本。

  • -NoDefaultExcludes

    防止從 點開始預設排除 NuGet 套件檔案和檔案和資料夾,例如 .svn.gitignore

  • -NonInteractive

    隱藏使用者輸入或確認的提示。

  • -NoPackageAnalysis

    指定封裝不應該在建置套件之後執行套件分析。

  • -OutputDirectory

    指定儲存所建立封裝的資料夾。 如果未指定任何資料夾,則會使用目前的資料夾。

  • -OutputFileNamesWithoutVersion

    指定命令是否應該準備沒有版本的套件輸出名稱。

  • -PackagesDirectory

    指定 packages 資料夾。

  • -p|-Properties

    其他選項之後,應該會顯示在命令行的最後一個。 指定覆寫項目檔中值的屬性清單;如需屬性名稱,請參閱 通用 MSBuild 項目屬性 。 這裡的 Properties 自變數是 token=value 配對的清單,以分號分隔,其中檔案中的每個.nuspec出現$token$項目都會取代為指定的值。 值可以是引號中的字串。 請注意,針對 「Configuration」 屬性,預設值為 “Debug”。 若要變更為發行組態,請使用 -Properties Configuration=Release一般而言,屬性應該與對應專案建置期間所使用的屬性相同,以避免潛在的奇怪行為。

  • -SolutionDirectory

    指定方案目錄。

  • -Suffix

    (3.4.4+) 將後綴附加至內部產生的版本號碼,通常用於附加組建或其他發行前版本標識碼。 例如,使用 -suffix nightly 會建立版本號碼的套件,例如 1.2.3-nightly。 後綴必須以字母開頭,以避免與不同版本的 NuGet 和 NuGet 封裝管理員 的警告、錯誤和潛在不相容。

  • -SymbolPackageFormat

    建立符號套件時,允許在 和 symbols.nupkg 格式之間進行snupkg選擇。

  • -Symbols

    指定封裝包含來源和符號。 與檔案搭配 .nuspec 使用時,這會建立一般 NuGet 套件檔案和對應的符號套件。 根據預設,它會建立 舊版符號套件。 為符號套件新建議的格式為 .snupkg。 請參閱建立符號套件 (.snupkg)

  • -Tool

    指定項目的輸出檔應該放在 tools 封裝內的資料夾中。

  • -Verbosity [normal|quiet|detailed]

    指定輸出中顯示的詳細資料量: normal (預設值), quietdetailed

  • -Version

    覆寫檔案中的 .nuspec 版本號碼。

另請參閱 環境變數

排除開發相依性

某些 NuGet 套件在開發相依性中很有用,可協助您撰寫自己的連結庫,但不一定需要實際套件相依性。

命令pack會忽略 package 屬性設定為true的專案packages.configdevelopmentDependency。 這些專案將不會包含在建立的套件中作為相依性。

例如,請考慮來源專案中的下列 packages.config 檔案:

<?xml version="1.0" encoding="utf-8"?>
<packages>
    <package id="jQuery" version="1.5.2" />
    <package id="netfx-Guard" version="1.3.3.2" developmentDependency="true" />
    <package id="microsoft-web-helpers" version="1.15" />
</packages>

針對此專案,所 nuget pack 建立的套件將會相依於 jQuerymicrosoft-web-helpers ,但不會相 netfx-Guard依於 。

隱藏套件警告

雖然建議您在套件作業期間解決所有 NuGet 警告,但在某些情況下,隱藏這些警告是值得的。

您可以透過下列方式達成此目的:

nuget.exe套件套件.nuspec -Properties NoWarn=NU5104

範例

nuget pack

nuget pack foo.nuspec

nuget pack foo.csproj

nuget pack foo.csproj -Properties Configuration=Release

nuget pack foo.csproj -Build -Symbols -Properties owners=janedoe,xiaop;version="1.0.5"

# Create a package from project foo.csproj, using MSBuild version 12 to build the project
nuget pack foo.csproj -Build -Symbols -MSBuildVersion 12 -Properties owners=janedoe,xiaop;version="1.0.5"

# Create a package from project foo.nuspec and the corresponding symbol package using the new recommended format .snupkg
nuget pack foo.nuspec -Symbols -SymbolPackageFormat snupkg

nuget pack foo.nuspec -Version 2.1.0

nuget pack foo.nuspec -Version 1.0.0 -MinClientVersion 2.5

nuget pack Package.nuspec -exclude "*.exe" -exclude "*.bat"

注意

pack不支援 SDK 樣式專案的命令,請改用 dotnet packmsbuild -t:pack 來封裝這些專案。