簡體   English   中英

如何在 Visual Studio 2019 上使用 github nuget 包

[英]How to use github nuget packages on Visual Studio 2019

我嘗試學習 Github 動作和包。 因此,我創建了一個示例 nuget package 並成功創建。 但是我無法使用它。

我按照這一步;

  1. 選項 > Nuget Package 經理 > Package 來源
  2. 單擊添加按鈕寫入組織名稱並添加 package 源地址,如下所示: 在此處輸入圖像描述

  3. 在那之后,Visual Studio 不會向我詢問此地址的任何憑據。

  4. 如果沒有憑據,我會期望出錯。 我明白了。

    [github] 無法從源“ https://nuget.pkg.github.com/[OrganizationName]/query?q=&skip=0&take=26&prerelease=false&semVerLevel=2.0.0 ”檢索元數據。 響應狀態碼不表示成功:401(未授權)。

  5. 然后,我決定使用一些憑證,如github 文檔中所述。

  6. 我的 nuget.config 文件: 在此處輸入圖像描述

  7. 但是我仍然收到未經授權的錯誤。 而且,當我單擊錯誤鏈接時,會收到一條這樣的消息:

{"errors":[{"code":"您的令牌未被授予執行此查詢所需的范圍。'id' 字段需要以下范圍之一","message":" ['read:packages' ],但您的令牌僅被授予:[''] 范圍。請在以下位置修改您的令牌范圍: https://github.com/settings/tokens 。"}]}

但我已經有一個帶有讀/寫 package 憑證的令牌。 在此處輸入圖像描述

  1. 所有這些都失敗了,我嘗試另一種方式。 我將憑據信息添加到 Windows Credential Manager。 一切還是一樣。

那么,如何添加和使用我的私有 nuget 包?

這不是一件容易的事,但這是解決方案(經過 2 天的努力)

  1. 首先在Github中生成PAT(Personal Access Token)
    按照以下步驟生成 PAT
    read:packages 選項對 select 非常重要在此處輸入圖像描述
    Github 只會顯示一次 PAT,所以一定要復制保存,否則需要重新生成

  2. 現在有了 PAT,將Nuget.Config文件添加到您的項目中
    在此處輸入圖像描述
    該文件的內容應如下所示

    <?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <clear /> <add key="github" value="https://nuget.pkg.github.com/OWNER/index.json" /> </packageSources> <packageSourceCredentials> <github> <add key="Username" value="USERNAME" /> <add key="ClearTextPassword" value="TOKEN" /> </github> </packageSourceCredentials> </configuration>
  3. 您必須更換:

    • 使用您在 GitHub 上的用戶帳戶名稱的 USERNAME。
    • TOKEN 與您的個人訪問令牌(您在第 1 步中生成的令牌)
    • OWNER 與擁有包含您的項目的存儲庫的用戶或組織帳戶的名稱。
  4. 您必須重新啟動 Visual Studio 甚至重新啟動 PC這很重要

之后打開終端並復制並粘貼(可能有一些修改)Github 給你安裝 package 的聲明

在此處輸入圖像描述

現在您已准備好獲取 Package


更新

如何為團隊配置github nuget包?

使用環境變量配置nuget.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="NuGet official package source" value="https://api.nuget.org/v3/index.json" />
    <add key="Github" value="https://nuget.pkg.github.com/OWNER/index.json" />
  </packageSources>
  <packageSourceCredentials>
    <Github>
      <add key="Username" value="%GITHUB_PACKAGE_USER_NAME%" />
      <add key="ClearTextPassword" value="%GITHUB_PACKAGE_TOKEN%" />
    </Github>
  </packageSourceCredentials>
</configuration>

GITHUB_PACKAGE_USER_NAMEGITHUB_PACKAGE_TOKEN可以是任何你想要的。

現在,每個團隊成員都應該配置他們的用戶環境變量:

  • GITHUB_PACKAGE_USER_NAME : 團隊成員 github 用戶名
  • GITHUB_PACKAGE_TOKEN :團隊成員個人訪問令牌 (PAT)

通過這些配置,假設團隊成員可以訪問 OWNER package 存儲庫,Visual Studio 將能夠查詢和下載包。

如何在github 操作流程中恢復 github nuget 包?

配置之前的NuGet.config ,您需要更改傳遞所需環境變量的工作流,如下所示:

- name: Restore dependencies
  env:
    GITHUB_PACKAGE_USER_NAME: ${{ github.actor }}
    GITHUB_PACKAGE_TOKEN: ${{ secrets.RESTORE_ORGANIZATION_PACKAGES }}
  run: dotnet restore ./src

由於您無法通過 PAT,因此您需要配置一個 github 密碼(用於存儲庫組織)。 在上面的示例中,我在存儲庫級別創建了一個名為RESTORE_ORGANIZATION_PACKAGES的 secret,它具有read:packages權限。

我今天剛剛用 VS 19 遇到了這個問題。

當如下所示為 Nuget 包添加新源時,我第一次收到用戶和密碼提示

添加 nuget package 來源

我錯誤地輸入了我的 github 密碼作為密碼。 相反,您應該在 github 設置下創建一個令牌,如下所示,並輸入令牌本身而不是您的帳戶密碼。

生成令牌

就我而言,我在創建令牌時選擇了以下選項

令牌選項

不幸的是,VS 19 沒有再次提示輸入憑據並繼續顯示錯誤消息:

[github] 無法從源檢索元數據...。響應狀態代碼不表示成功:401(未授權)。

要在 Windows 上更改此參數,請打開控制面板\用戶帳戶\憑據管理器,如下所示:

Web 憑據

單擊編輯,並將您剛剛在 github 上創建的訪問令牌粘貼為密碼。 向下滾動憑據列表。 就我而言,我還需要更改密碼。

第二個 web 憑據

如何在 Visual Studio 2019 上使用 github nuget 包

首先,確保nuget.config文件中的憑據信息正確無誤。

我發現您的文檔建議您應該在解決方案中添加一個新的nuget.config文件。 這個nuget.config文件是一個本地動作文件,它將作用於當前子目錄和當前級別以下的任何項目。 你可以參考這個文件

這樣,您應該重新啟動 VS 實例以啟用這個新的nuget.config文件。

--------全局nuget.config--------

但是,根據您的描述和第一張圖片,您使用了全局nuget.config文件。 並且 UI 的信息存儲在全局nuget.config文件下。

如果你想為你 PC 上的所有項目配置這個 gihub package 源,你應該在全局nuget.config文件中配置它。

您提供的第一張圖片表明您在全局文件中使用了( C:\Users\xxx(current user)\AppData\Roaming\NuGet\NuGet.Config )。

這個 function 也需要重啟 VS 才能啟用新的nuget.config文件。

建議

  1. 請將您的文件內容添加到C:\Users\xxx(current user)\AppData\Roaming\NuGet\NuGet.Config中。

  2. 重新啟動 VS 實例或重新啟動 PC 以啟用這個新的nuget.config文件。 它就是這樣設計的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM