如何让Visual Studio 2017指定NuGet包源,避免双源检索耗时?
当然可以解决这个问题!很多团队在混用内部NuGet源和公共源时都会遇到这种“多源检索拖慢安装”的情况,下面给你几个实用的方案,按推荐程度排序:
1. 配置包源映射(最智能的方案)
NuGet 3.5及以上版本支持包源映射,它能让Visual Studio自动根据包的前缀选择对应的源,不用你手动切换。这是我最推荐的方法,一劳永逸。
你只需要编辑项目或解决方案目录下的NuGet.Config文件(如果没有就新建一个),添加如下配置:
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> <add key="TFS Internal Feed" value="http://你的TFS服务器地址/tfs/集合名/_packaging/你的内部Feed/nuget/v3/index.json" /> </packageSources> <packageSourceMapping> <!-- 把你的内部包前缀匹配到TFS源,比如所有以"YourCompany."开头的包 --> <packageSource key="TFS Internal Feed"> <package pattern="YourCompany.*" /> </packageSource> <!-- 其他所有包都默认用nuget.org --> <packageSource key="nuget.org"> <package pattern="*" /> </packageSource> </packageSourceMapping> </configuration>
配置完成后,当你安装Microsoft.Owin.Security.OpenIdConnect这类公共包时,VS只会去nuget.org检索;安装你的内部包时,才会访问TFS源,完美解决冲突。
2. 临时切换包源(快速临时方案)
如果只是偶尔安装公共包,不想改配置,可以手动切换源:
- 右键项目 → 管理NuGet程序包
- 点击右上角的齿轮图标打开「包源设置」
- 安装公共包时,只勾选
nuget.org,取消勾选内部TFS源;安装内部包时再反过来勾选。
3. 命令行指定源(适合自动化或习惯CLI的场景)
用NuGet包管理器控制台或者.NET CLI安装时,直接指定源地址,这样就不会遍历所有源了:
- NuGet控制台命令:
Install-Package Microsoft.Owin.Security.OpenIdConnect -Source https://api.nuget.org/v3/index.json
- .NET CLI命令:
dotnet add package Microsoft.Owin.Security.OpenIdConnect --source https://api.nuget.org/v3/index.json
额外提示
如果你的内部TFS源本身响应较慢,也可以考虑优化它:比如清理Feed里的旧版本包、开启NuGet缓存(VS默认会缓存包,你可以在「选项→NuGet包管理器→常规」里确认缓存设置),这些都能间接提升安装速度。
内容的提问来源于stack exchange,提问作者David Yates
相关产品推荐
相关产品推荐

