如何在dotnet restore命令中同时配置本地与NuGet服务器源?
解决dotnet restore同时配置本地与远程NuGet源的问题
我懂你遇到的坑——在TeamCity里执行dotnet restore时,直接把两个源用空格丢给--source参数,结果远程源被当成本地路径拼接了,这是因为每个源都需要单独用--source(或缩写-s)参数声明,不能把多个源堆在同一个--source后面。
正确的单命令写法
给每个源都加一次--source参数就搞定了,比如:
dotnet restore --source ./LocalFolder --source https://api.nuget.org/v3/index.json
这里有两个细节要注意:
- 本地文件夹如果用相对路径,要确保TeamCity的构建工作目录是项目根目录;不确定的话,直接用绝对路径(比如
C:\BuildAgent\work\xxx\LocalFolder)更稳妥 - 官方NuGet源建议用完整的v3地址
https://api.nuget.org/v3/index.json,比短地址兼容性更好
为什么之前的写法会出错?
当你只写一次--source然后跟两个值时,dotnet restore会把第二个值当成第一个源路径的子目录来解析,所以才会出现C:\BuildAgent\work\https://api.nuget.org/这种离谱的拼接路径——它把远程URL当成本地文件夹名处理了。
额外优化方案(可选)
如果不想每次都写一堆参数,也可以在项目根目录放一个NuGet.config文件,预先配置好两个源:
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="LocalSource" value="./LocalFolder" /> <add key="NuGetOfficial" value="https://api.nuget.org/v3/index.json" /> </packageSources> </configuration>
之后在TeamCity里直接执行dotnet restore就行,它会自动读取这个配置文件里的源,命令更简洁,也不容易出错。
内容的提问来源于stack exchange,提问作者star213
相关产品推荐
相关产品推荐

