gpt4 book ai didi

github - 使用 NuGet : Unable to load the service index error 发布和使用 GitHub 包存储库

转载 作者:行者123 更新时间:2023-12-03 09:27:58 26 4
gpt4 key购买 nike

我正在尝试使用 GitHub 包 ( documentation here ) 推送然后使用 NuGet 包。作为一个新手,经过一番试验后,我设法将一个示例 NuGet 包推送到了一个公共(public) GitHub 存储库。

然而,我错过了最后一部分,即从一些 Visual Studio 项目中使用包。当我尝试添加包时,我首先收到“正在为...还原包”通知,然后出现错误“无法加载源的服务索引...:输入不是有效的 Base-64 字符串它包含非基数 64 字符、两个以上的填充字符或填充字符中的非法字符”。

所以,我的 NuGet 端点似乎没有按预期配置,但我找不到明确的方向。为了帮助像我这样的新手从 GPR 开始,并详细说明我的过程,以便读者能够发现我的错误,以下是我到目前为止所学到的:

设置

在使用 GPR 之前,您必须 create a token in your GitHub account .

创建和发布包

  • 设置RepositoryUrlRepositoryType .csproj 中的属性文件到您的目标存储库 URL 和 git分别,例如:

  • <Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
    <!-- omissis ... -->
    <RepositoryUrl>https://github.com/USERNAME/PROJECTNAME</RepositoryUrl>
    <RepositoryType>git</RepositoryType>
    </PropertyGroup>
    </Project>

  • 打开项目文件夹中的 GitHub bash,然后 创建包像这样:

  • dotnet pack NAME.csproj -c Release -p:IncludeSymbols=true -p:SymbolPackageFormat=snupkg

    在哪里 -c选择配置。见 creating snupkg更多信息, dotnet pack reference .
  • 打开项目文件夹中的 GitHub bash,然后 发布 像这样:dotnet nuget push "bin/Release/NAME.1.0.0.nupkg" --source "github" .

  • 备注 :您首先需要注册(一次)GPR 提要:

    nuget sources add -name "github" -Source https://nuget.pkg.github.com/YOURGITHUBUSERNAME/index.json -Username YOURGITHUBUSERNAME -Password YOURGITHUBTOKEN

    如果需要安装 nuget.exe , 从 https://www.nuget.org/downloads 下载.如果你放置它,例如在 C:\Exe ,您可以使用 /c/Exe/nuget.exe 从 Windows Git Bash 调用它.

    此外,您需要设置 nuget API key :

    nuget setapikey YOURGITHUBTOKEN -Source https://nuget.pkg.github.com/YOURGITHUBUSERNAME/index.json

    这会加密 key 并将其保存在您的 %APPDATA% 下的配置文件中。文件夹。例如我的结局是 C:\Users\USERNAME\AppData\Roaming\NuGet\NuGet.Config .

    使用包
  • documentation
  • 对于每个客户项目,add nuget.config to your project : 添加 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="YOURUSERNAME" />
    <add key="ClearTextPassword" value="YOURTOKEN" />
    </github>
    </packageSourceCredentials>
    </configuration>

    这来自文档示例。然而,为了避免将 token 存储在此文件中,该文件将保存在存储库中,我宁愿使用每个用户或每台机器的 NuGet 设置( reference):例如每个用户:

    nuget config -set GITHUB_PACKAGES_TOKEN=YOURTOKEN

    这将保存每个用户的设置(默认选项)。现在,像这样使用它(见 Setting an environment variable in a NuGet.Config file ):

    <add key="Password" value="%GITHUB_PACKAGES_TOKEN%" />
  • 要使用包,请执行 dotnet add YOURPROJECT.csproj package YOURPACKAGE --version YOURPACKAGEVERSION .

  • 然而,在最后一点我得到了上述错误。我的 NuGet 源配置哪里错了?

    最佳答案

    将 NuGet 包推送到 Github 的文档已过时。对我有用的步骤:

  • 去 GitHub
  • 点击你的头像(右上角)
  • 设置
  • 开发者设置
  • 个人访问 token
  • 产生
  • write:packages
  • read:packages
  • delete:packages
  • 这将自动检查 repo您的 OAuth token 的权限

  • 点击生成 token

  • 打开命令
  • 导航到您的项目目录或包含您的 NuGet 包的目录
  • 添加一个新的 nuget 源:
  • dotnet nuget add source --username [GithubUserName] --password [YourApiKey] --name github https://nuget.pkg.github.com/[UsernameOrOrganizationName]/index.json

  • 将包裹推送至github来源
  • dotnet nuget push --source github bin\Release\MyAwesomePackage.1.0.0.nupkg



  • 在将代码提交到源代码管理之前,请确认 Github API key 未存储在解决方案内的 Nuget.config 文件中。

    关于github - 使用 NuGet : Unable to load the service index error 发布和使用 GitHub 包存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59445987/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com