如何为.NET 6项目的GitHub Action添加Telerik Nuget源解决restore报错
问题原因
你的CI环境只配置了Telerik的账号密码,没有将Telerik私有NuGet源添加到NuGet的源列表中,dotnet restore默认只会从nuget.org拉取包,自然找不到Telerik.UI.for.Blazor包。同时你使用的Azure静态Web应用部署动作默认会执行独立的构建流程,不会复用你提前执行的restore结果,也会触发相同的报错。
修复步骤
1. 添加Telerik NuGet源到CI环境
在Setup .NET Core SDK步骤之后、Restore NuGet Packages步骤之前,新增添加私有源的步骤:
- name: Add Telerik NuGet Source run: dotnet nuget add source https://nuget.telerik.com/v3/index.json --name telerik --username ${{ secrets.MyTelerikAccountUsername }} --password ${{ secrets.MyTelerikAccountPassword }} --store-password-in-clear-text
注意:Linux环境下必须加--store-password-in-clear-text参数,否则NuGet无法正常读取保存的凭证。
2. 调整Azure静态Web应用部署配置
你有两种可选方案解决部署动作重复构建的问题:
方案A:跳过部署动作的自动构建(推荐)
提前自己完成构建发布,直接让部署动作上传现成产物,避免重复配置源:
- 在Restore步骤之后新增发布步骤:
- name: Publish Blazor WASM App run: dotnet publish Client/Client.csproj -c Release -o publish_output
- 修改
Build And Deploy步骤的配置,新增skip_app_build参数,调整输出路径:
uses: Azure/static-web-apps-deploy@v1 with: azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_WONDERFUL_HILL_0F2E3E10F }} repo_token: ${{ secrets.GITHUB_TOKEN }} action: "upload" app_location: "publish_output/wwwroot" # 改为发布后的静态资源路径 skip_app_build: true # 跳过自动构建
方案B:提交nuget.config到仓库
在解决方案根目录提交nuget.config文件,提前配置好源地址,部署动作会自动识别该配置:
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="nuget.org" value="https://api.nuget.org/v3/index.json" /> <add key="telerik" value="https://nuget.telerik.com/v3/index.json" /> </packageSources> </configuration>
该方案无需调整构建流程,但要注意不要在配置文件中写入明文账号密码,CI环境会自动匹配已添加的源的凭证。
验证检查
确认你在GitHub仓库中配置的MyTelerikAccountUsername和MyTelerikAccountPassword两个Secret值正确,密码可使用Telerik账号的登录密码,也可使用Telerik后台生成的专用访问令牌。
内容的提问来源于stack exchange,提问作者Bambam Deo
相关产品推荐
相关产品推荐

