dotnet run --project触发NuGet 401未授权,如何传入授权参数?
解决dotnet run命令NuGet未授权(401)问题
原因说明
Rider或Visual Studio会自动读取系统凭据存储(比如Windows凭据管理器、macOS钥匙串)里的NuGet私有源凭据,但命令行环境可能没正确加载这些凭据,导致恢复包时触发401错误。
解决方案
1. 手动配置NuGet凭据文件
打开用户目录下的NuGet配置文件:
- Windows:
%userprofile%\.nuget\NuGet\NuGet.Config - macOS/Linux:
~/.nuget/NuGet/NuGet.Config
在文件中添加或修改私有源的凭据配置,示例如下:
<packageSources> <!-- 先确保私有源已添加 --> <add key="你的私有源名称" value="https://你的私有源地址/v3/index.json" /> </packageSources> <packageSourceCredentials> <你的私有源名称> <add key="Username" value="你的用户名" /> <add key="ClearTextPassword" value="你的API密钥或密码" /> </你的私有源名称> </packageSourceCredentials>
保存后重新运行dotnet run命令即可。
2. 用dotnet命令添加凭据
不想手动改配置文件的话,直接用命令行操作:
- 先添加私有源(如果还没加):
dotnet nuget add source https://你的私有源地址/v3/index.json --name 你的私有源名称 - 设置此源的凭据:
dotnet nuget update source 你的私有源名称 --username 你的用户名 --password 你的API密钥或密码 --store-password-in-clear-text
3. 临时命令行传参(仅临时测试用)
如果只是临时跑一次,可通过环境变量或build参数传递,注意这种方式不安全,别在公共环境使用:
- 方式一:用环境变量
NUGET_CREDENTIALPROVIDER_SESSIONTOKEN=你的API密钥 dotnet run --project myProjectXYZ - 方式二:先build再run,传递NuGet参数
dotnet build --project myProjectXYZ /p:NuGetUsername=你的用户名 /p:NuGetPassword=你的API密钥 && dotnet run --project myProjectXYZ
4. 检查系统凭据存储
- Windows:打开「凭据管理器」→「Windows凭据」,找到对应私有源的条目,确认凭据有效。
- macOS:打开「钥匙串访问」,搜索NuGet相关条目,确保命令行有读取权限。
验证步骤
先执行dotnet restore --project myProjectXYZ测试包恢复是否正常,restore成功后再运行dotnet run命令即可。
内容的提问来源于stack exchange,提问作者Arekadiusz
相关产品推荐
相关产品推荐

