如何为Install-Package指定本地SMB共享源以安装自定义类库?
解决局域网SMB共享NuGet源优先安装自定义包的问题
方法1:调整NuGet源优先级
VS的NuGet源列表是从上到下匹配优先级的,把你的SMB共享源(比如命名为Local)移到nuget.org上方:
- 打开VS「工具」→「选项」→「NuGet包管理器」→「包源」
- 选中
Local源,点击向上箭头移至nuget.org之前 - 保存设置后重新执行
Install-Package ClassLibrary1,NuGet会优先从本地源查找包
方法2:强制指定源并屏蔽其他源
如果优先级调整无效,可在安装命令中明确仅使用SMB共享源:
Install-Package ClassLibrary1 -Source \\my\share\nuget -SkipNonexistentSources
也可以通过项目根目录的NuGet.config临时禁用nuget.org:
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="Local" value="\\my\share\nuget" /> <add key="nuget.org" value="https://api.nuget.org/v3/index.json" disabled="true" /> </packageSources> </configuration>
安装完成后,将nuget.org的disabled属性改回false即可。
方法3:指定自定义包版本
如果你的ClassLibrary1版本号低于nuget.org上的同名包,NuGet默认会拉取最新版本。可直接指定版本安装:
Install-Package ClassLibrary1 -Version 1.0.0 -Source \\my\share\nuget
也可以提升自定义包的版本号,确保高于公共源的版本。
方法4:清除NuGet缓存
缓存异常可能导致源识别错误,清除后重试:
- VS界面操作:「工具」→「NuGet包管理器」→「管理解决方案的NuGet包」→ 右上角设置图标→「清除所有NuGet缓存」
- 命令行操作:
nuget locals all -clear
内容的提问来源于stack exchange,提问作者Damn Vegetables
相关产品推荐
相关产品推荐

