.net 如何通过GitHub操作在我的dotnet项目中使用GPR和nuget.org源代码?

.net 如何通过GitHub操作在我的dotnet项目中使用GPR和nuget.org源代码?,.net,nuget,github-actions,github-package-registry,.net,Nuget,Github Actions,Github Package Registry,我正试图通过GitHub操作构建我的dotnet类库项目。除了一些标准的NuGet.org包之外,我的项目还使用了一个存储在GPR上的私有NuGet包。我无法像在本地机器上那样获得成功的构建 我正在使用setup dotnet(并尝试了warrenbuckley/setup Nuget,但没有成功): 作业: 建造: 运行于:windows最新版本#我从ubuntu最新版本开始,但dotnet nuget缺少功能。 步骤: -用途:行动/checkout@master -用途:操作/设置-dot

我正试图通过GitHub操作构建我的dotnet类库项目。除了一些标准的NuGet.org包之外,我的项目还使用了一个存储在GPR上的私有NuGet包。我无法像在本地机器上那样获得成功的构建

我正在使用
setup dotnet
(并尝试了
warrenbuckley/setup Nuget
,但没有成功):

作业:
建造:
运行于:windows最新版本#我从ubuntu最新版本开始,但dotnet nuget缺少功能。
步骤:
-用途:行动/checkout@master
-用途:操作/设置-dotnet@v1
与:
dotnet版本:“3.1.100”
源url:https://nuget.pkg.github.com/owner/index.json
环境:
NUGET_AUTH_令牌:${{secrets.GITHUB_令牌}
-运行:dotnet还原--源在此处失败
-运行:dotnetbuild-c发行版--无恢复
我知道它找到了合适的GPR,因为在这里它成功地安装了我的私有软件包,,但找不到任何nuget.org软件包
我尝试过的另一种变体:

-运行:dotnet nuget添加源代码https://nuget.pkg.github.com/myorg/index.json -“我的来源”
-run:dotnet build-c发行版--此处没有失败的恢复
在这里,它找不到我的私人包裹。
最近,我尝试了nuget cli:

-用法:warrenbuckley/Setup-Nuget@v1
-运行:nuget sources添加-Sourcehttps://nuget.pkg.github.com/myorg/index.json -名称“我的组织”-用户名myorguser-密码${{secrets.GITHUB_TOKEN}}-StorePasswordInClearText
-运行:nuget还原在此处失败
-运行:dotnetbuild-c发行版--无恢复
这提供了最多的信息,但仍然找不到我的GPR包,尽管(与前面的示例不同)它找到了我期望的所有来源(local、nuget.org和我的私有组织)。以下是一些看起来很有趣的日志:

32未找到https://nuget.pkg.github.com/myorg/download/mypackage/index.json
...
65未找到https://api.nuget.org/v3-flatcontainer/efinitycore/index.json
...
930 NU1101:找不到包MyPackage。源中不存在具有此id的包:My Org、Microsoft Visual Studio脱机包、nuget.Org
931 D:\a\WorkflowLibrary\WorkflowLibrary\WorkflowLibrary.Tests\WorkflowLibrary.Tests.csproj中的错误
932 NU1101:找不到包MyPackage。源中不存在具有此id的包:My Org、Microsoft Visual Studio脱机包、nuget.Org
...
使用了935个NuGet配置文件:
C:\Users\RunneAdmin\AppData\Roaming\NuGet\NuGet.Config
C:\ProgramFiles(x86)\NuGet\Config\Microsoft.VisualStudio.Offline.Config
C:\ProgramFiles(x86)\NuGet\Config\Xamarin.Offline.Config
使用942个提要:
C:\ProgramFiles(x86)\Microsoft SDK\NuGetPackages\
https://api.nuget.org/v3/index.json
https://nuget.pkg.github.com/myorg/index.json
这对我很有效

工作: 建造:


在上面的步骤中,将
numget\u AUTH\u令牌:${{secrets.GITHUB\u TOKEN}}
更改为
numget\u AUTH\u令牌:${{secrets.YOUR\u PAT}
。我也遇到了同样的问题,我可以用PAT访问我的GPR专用feed,只花了半天时间解决了与OP描述的问题类似的问题。您必须注意跨存储库的场景,其中包起源于/构建于一个存储库中,然后尝试通过另一个存储库中的GH操作进行恢复。在这种情况下,Actions生成的
GITHUB_令牌
的作用域为当前回购,没有权限查看GH组织内其他私人回购的包。这导致Nuget在尝试检查GPR中的包时显示NotFound响应代码,并最终显示NU1101错误代码

有关潜在问题的更多信息,请参见此处:


抱歉的解决办法是切换到使用个人访问令牌。

谢谢,但这不是我的问题。它不会同时找到我的包源代码和NuGet源代码(404),但当它找到时,身份验证工作正常。
runs-on: windows-latest

steps:
- uses: actions/checkout@v2
- name: Setup Nuget.exe
  uses: nuget/setup-nuget@v1.0.2
- name: Add GPR Source using nuget.exe
  run: nuget sources add -name "GPR" -Source https://api.nuget.org/v3/index.json -Source https://nuget.pkg.github.com/{myorg}/index.json -Username {login} -Password ${{ token }}
- name: Setup .NET Core
  uses: actions/setup-dotnet@v1
  with:
    dotnet-version: 3.1.101
steps:
      - uses: actions/checkout@master
      - uses: actions/setup-dotnet@v1
        with:
          dotnet-version: '3.1.100'
          source-url: https://nuget.pkg.github.com/owner/index.json
        env:
          NUGET_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}