適用於: 套件建立 • 支援的版本: 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.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 建立的套件將會相依於 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 來封裝這些專案。