pack 命令 (NuGet CLI)
適用於: 套件建立 • 支援的版本: 2.7+
根據指定的 .nuspec 或項目檔建立 NuGet 套件。 命令 dotnet pack
(請參閱 dotnet Commands) 和 msbuild -t:pack
(請參閱 MSBuild 目標) 可用來做為替代專案。
重要
針對 PackageReference 型專案使用 dotnet pack
或 msbuild -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
(預設值),quiet
或detailed
。-Version
覆寫檔案中的
.nuspec
版本號碼。
另請參閱 環境變數
排除開發相依性
某些 NuGet 套件在開發相依性中很有用,可協助您撰寫自己的連結庫,但不一定需要實際套件相依性。
命令pack
會忽略 package
屬性設定為true
的專案packages.config
developmentDependency
。 這些專案將不會包含在建立的套件中作為相依性。
例如,請考慮來源專案中的下列 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
建立的套件將會相依於 jQuery
和 microsoft-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 pack
或 msbuild -t:pack
來封裝這些專案。