我正在尝试使用 GitHub 包(此处为文档)推送然后使用 NuGet 包。作为一个新手,经过一些试验后,我设法将示例 NuGet 包推送到公共 GitHub 存储库。
然而,我错过了最后一部分,即从一些 Visual Studio 项目中使用包。当我尝试添加包时,我首先收到“正在为...恢复包”通知,然后是错误“无法加载源的服务索引...:输入不是有效的 Base-64 字符串,因为它包含非 base 64 字符、两个以上的填充字符或填充字符中的非法字符”。
因此,似乎我的 NuGet 端点没有按预期配置,但我找不到明确的方向。为了帮助像我这样的新手从 GPR 开始,并详细说明我的程序,以便读者可以发现我的错误,以下是我到目前为止所学到的:
在使用 GPR 之前,您必须在您的 GitHub 帐户中创建一个令牌。
RepositoryUrl和RepositoryType属性分别设置为.csproj目标存储库 URL 和git,例如:<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<!-- omissis ... -->
<RepositoryUrl>https://github.com/USERNAME/PROJECTNAME</RepositoryUrl>
<RepositoryType>git</RepositoryType>
</PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
dotnet pack NAME.csproj -c Release -p:IncludeSymbols=true -p:SymbolPackageFormat=snupkg
Run Code Online (Sandbox Code Playgroud)
其中-c选择配置。有关更多信息,请参阅创建 snupkg,以及dotnet pack 参考。
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
Run Code Online (Sandbox Code Playgroud)
如果需要安装nuget.exe,请从https://www.nuget.org/downloads下载。例如,如果将它放在 中C:\Exe,则可以从 Windows Git Bash 中使用/c/Exe/nuget.exe.
此外,您需要设置 nuget API 密钥:
nuget setapikey YOURGITHUBTOKEN -Source https://nuget.pkg.github.com/YOURGITHUBUSERNAME/index.json
Run Code Online (Sandbox Code Playgroud)
这会加密密钥并将其保存在您的%APPDATA%文件夹下的配置文件中。例如,我的最终在C:\Users\USERNAME\AppData\Roaming\NuGet\NuGet.Config.
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>
Run Code Online (Sandbox Code Playgroud)
这来自文档示例。然而,为了避免在这个文件中存储令牌,这将被保存在 repo 中,我宁愿使用每个用户或每个机器的 NuGet 设置(参考):例如每个用户:
nuget config -set GITHUB_PACKAGES_TOKEN=YOURTOKEN
Run Code Online (Sandbox Code Playgroud)
这将保存每个用户的设置(默认选项)。现在,像这样使用它(请参阅在 NuGet.Config 文件中设置环境变量):
<add key="Password" value="%GITHUB_PACKAGES_TOKEN%" />
Run Code Online (Sandbox Code Playgroud)
dotnet add YOURPROJECT.csproj package YOURPACKAGE --version YOURPACKAGEVERSION.然而,在最后一点我得到了上述错误。我的 NuGet 源配置错误在哪里?
将 NuGet 包推送到 Github 的文档已过时。对我有用的步骤:
write:packagesread:packagesdelete:packagesrepo您的 OAuth 令牌的权限dotnet nuget add source --username [GithubUserName] --password [YourApiKey] --name github https://nuget.pkg.github.com/[UsernameOrOrganizationName]/index.jsongithub源
dotnet nuget push --source github bin\Release\MyAwesomePackage.1.0.0.nupkg在将代码提交到源代码管理之前,确认 Github API 密钥未存储在解决方案内的 Nuget.config 文件中。
| 归档时间: |
|
| 查看次数: |
2672 次 |
| 最近记录: |