共用方式為


NuGet 跨平台驗證外掛程式

在 4.8+ 版中,所有 NuGet 用戶端 (NuGet.exe、Visual Studio、dotnet.exe 和 MSBuild.exe) 都可以使用建置在 NuGet 跨平台外掛程式 模型之上的驗證外掛程式。

dotnet.exe 中的驗證

Visual Studio 和 NuGet.exe 預設為互動式。 NuGet.exe 包含一個開關,使其非互動。 此外,NuGet.exe 和 Visual Studio 外掛程式會提示使用者輸入。 在 dotnet.exe 中沒有提示,預設值為非互動式。

dotnet.exe 中的身份驗證機制是裝置流。 當還原或新增套件作業以互動方式執行時,指令列會提供作業區塊,並指示使用者如何完成驗證。 當使用者完成驗證時,作業將繼續。

為了使操作具有交互性,應輸入 --interactive. 目前只有明確 dotnet restoredotnet add package 命令支援互動式開關。 沒有互動式開關在 dotnet builddotnet publish

MSBuild 中的驗證

與 dotnet.exe類似,MSBuild.exe 預設為非互動式,MSBuild.exe 身份驗證機制是裝置流。 若要允許還原暫停並等待驗證,請使用 msbuild -t:restore -p:NuGetInteractive="true"呼叫還原。

建立跨平台驗證外掛程式

您可以在 Microsoft 認證提供者外掛程式中找到範例實作。

外掛程式必須符合 NuGet 用戶端工具所規定的安全性需求,這一點非常重要。 外掛程式成為驗證外掛程式所需的最低版本是 2.0.0。 NuGet 會使用外掛程式執行握手,並查詢支援的作業宣告。 如需特定訊息的詳細資訊,請參閱 NuGet 跨平台外掛程式 通訊協定訊息

NuGet 會設定記錄層級,並在適用時提供外掛程式的 Proxy 資訊。 只有在 NuGet 將記錄層級設定為外掛程式之後,才能將記錄輸出至 NuGet 主控台。

  • .NET Framework 外掛程式驗證行為

在 .NET Framework 中,允許外掛程式以對話框的形式提示使用者輸入。

  • .NET Core 外掛程式驗證行為

在 .NET Core 中,無法顯示對話方塊。 外掛程式應該使用裝置流程來驗證。 外掛程式可以將記錄訊息傳送至 NuGet,並向使用者提供指示。 請注意,日誌記錄在設定日誌級別到插件後才可用。 NuGet 不會從命令列接受任何互動式輸入。

當用戶端以「Get Authentication Credentials」命令呼叫插件時,插件必須遵循互動開關的設置,並遵守對話框開關的設置。

下表摘要說明外掛程式在所有組合中的行為方式。

是非互動式 可以顯示對話框 外掛程式行為
true true IsNonInteractive 開關相較於對話框選項具有優先權。 外掛程式不允許封鎖。
true 假的 IsNonInteractive 開關相較於對話框選項具有優先權。 外掛程式不允許封鎖。
假的 true 如果需要,外掛程式可以顯示對話方塊。 例如,互動式登入或帳戶選擇。
假的 假的 外掛程式應該/不能顯示對話方塊。 外掛程式應該使用裝置流程,透過記錄器記錄指令訊息來進行驗證。

NuGet 7.0 之前,NuGet 均會在 dotnet CLI 上設定 CanShowDialog 為 false,而在 MSBuild 還原作業則會設定為 true。 從 7.0 開始,NuGet 一律會設定 CanShowDialog 為 true,但外掛程式仍應該偵測圖形介面何時無法使用。 例如,在 Linux 上透過 SSH 連線執行且無 X 轉送,或在 PowerShell 遠端會話中。

在編寫插件之前,請參考以下規範。