有時您可能想要驗證特定套件的安裝來源。 您可以透過以下一些方式進行檢查。
備註
某些套件來源支援稱為上游來源的概念。 例如, Azure Artifacts 上游來源。 NuGet 用戶端不知道套件是否來自上游來源。 因此,套件來源的任何記錄都會列出已設定的來源,而不是上游來源。
.nupkg.metadata 全域套件資料夾中的檔案
將套件解壓縮到 global-packages 資料夾中時,會寫入檔案 .nupkg.metadata 。 從 NuGet 5.9.0 開始,NuGet 會新增套件來源。 請參閱下文,將 NuGet 版本對應至 Visual Studio 或 .NET SDK 版本。 例如:
{
"version": 2,
"contentHash": "bw3R9q8cVNhWXNpnvWb0OGP4HadS4zvClq+T1zf7AF+tLY1haZ2AvbHidQekf4PDv1T40c6brZeT/V0IBq7cEQ==",
"source": "https://api.nuget.org/v3/index.json"
}
備註
如果您的 global-packages 資料夾在升級至具有 NuGet 5.9.0 的較新版本工具之前已擷取套件,則檔案 .nupkg.metadata 將會是第 1 版,且不會包含套件來源。 您可以 清除 global-packages 資料夾 ,以確保所有套件都包含套件來源。
小提示
NuGet 只會將檔案寫入 .nupkg.metadataglobal-packages 資料夾。 使用的 packages.config 專案會使用解決方案套件資料夾,不會建立 .nupkg.metadata 檔案。
安裝套件記錄訊息
從 NuGet 5.9.0 開始,NuGet 會在還原訊息中輸出套件來源,通知已安裝套件。 例如:
Installed Moq 4.16.1 from https://api.nuget.org/v3/index.json with content hash bw3R9q8cVNhWXNpnvWb0OGP4HadS4zvClq+T1zf7AF+tLY1haZ2AvbHidQekf4PDv1T40c6brZeT/V0IBq7cEQ==.
小提示
此訊息以正常/資訊冗長度輸出。 Visual Studio 和 dotnet CLI 預設為最小詳細程度,因此預設不會顯示此訊息。 這些 msbuild 和 nuget CLI 工具預設為正常的詳細程度,因此預設會顯示此訊息。
HTTP 記錄訊息
當套件在本機無法使用時,無論是在 global-packages 資料夾、後援資料夾或本機檔案來源中,NuGet 都會透過 HTTP 從任何已設定的套件來源下載套件。 HTTP 請求和響應會以一般語速等級記錄,而且您應只會看到每個套件版本的單一請求和響應。 例如:
info : GET https://api.nuget.org/v3-flatcontainer/moq/index.json
info : OK https://api.nuget.org/v3-flatcontainer/moq/index.json 56ms
info : GET https://api.nuget.org/v3-flatcontainer/moq/4.16.1/moq.4.16.1.nupkg
info : OK https://api.nuget.org/v3-flatcontainer/moq/4.16.1/moq.4.16.1.nupkg 3ms
如果檔案最近下載,可能會從 NuGet 的 http 快取擷取
CACHE https://api.nuget.org/v3-flatcontainer/moq/index.json
CACHE https://api.nuget.org/v3-flatcontainer/moq/4.16.1/moq.4.16.1.nupkg
針對不同的 NuGet HTTP 伺服器實作,以及是否實作 NuGet V2 或 V3 HTTP 通訊協定,URL 格式可能會有所不同。
如果您 nuget.config 定義了多個 HTTP 來源,您會看到對每個套件檔案 index.json 的多個請求,每個來源一個。 但每個版本的軟體包只會下載一次 nupkg 。
套件簽章記錄訊息
如果正在下載的套件已簽署,NuGet 會驗證簽章,並以詳細模式紀錄下列訊息:
PackageSignatureVerificationLog: PackageIdentity: Moq.4.16.1 Source: https://api.nuget.org/v3/index.json PackageSignatureValidity: True
無論套件是從 HTTP 套件來源下載,還是從本機套件來源複製,都會報告此訊息。 如果套件已在 global-packages 資料夾或後援資料夾中可用,則不會輸出。
這很重要
由於移除 VeriSign CA 的信任 ,NuGet 已在特定平臺、特定版本的 NuGet 和 .NET SDK 中停用已簽署的套件驗證。 因此,相同的套件可能有 PackageSignatureVerificationLog 記錄,或可能遺失這些記錄,視您執行還原的平臺,以及您使用的 .NET 或 NuGet 版本而定。
NuGet 版本對應
下列版本的 NuGet 有套件來源記錄的重要變更:
| NuGet 版本 | Visual Studio 版本 | .NET SDK 版本 |
|---|---|---|
| NuGet 5.9.0 | Visual Studio 2019 16.9.0 | .NET 5 SDK 5.0.200 |