You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过CLI像Visual Studio一样还原NuGet包至./packages目录

解决旧.NET Framework项目NuGet包还原到./packages目录的问题

针对旧.NET Framework项目(依赖packages.config管理NuGet包),要实现和Visual Studio打开项目时一致的包还原行为,可采用以下方案:

方法1:使用NuGet CLI执行还原

这是最贴合VS内部还原逻辑的方式,因为VS本质也是调用NuGet处理packages.config类型的依赖:

  1. 可以直接使用Visual Studio 2022自带的NuGet CLI,路径通常为:C:\Program Files (x86)\Microsoft Visual Studio\2022\<你的VS版本>\Common7\IDE\CommonExtensions\Microsoft\NuGet\nuget.exe,建议将其加入系统PATH方便调用。
  2. 在解决方案根目录执行命令:
    nuget restore <你的解决方案路径>.sln -PackagesDirectory ./packages
    
    该命令会扫描解决方案下所有项目,将packages.config中声明的依赖包下载到指定的./packages目录。

方法2:通过MSBuild指定还原参数

若不想单独调用NuGet CLI,可通过MSBuild强制触发packages.config的还原逻辑:

msbuild <你的解决方案路径>.sln /t:Restore /p:RestorePackagesConfig=true /p:PackagesDirectory=./packages
  • /p:RestorePackagesConfig=true:强制MSBuild处理packages.config类型的依赖还原
  • /p:PackagesDirectory=./packages:明确指定包的下载目录

为什么之前的命令无效?

  • msbuild <csproj> -t:restore:默认优先处理PackageReference类型的依赖,而旧.NET Framework项目用的是packages.config,因此仅会还原netstandard这类用PackageReference的子项目
  • dotnet msbuild /t:restore:dotnet CLI对旧.NET Framework的packages.config支持有限,会误判项目已处于最新状态,不会触发实际的包下载

额外提示

确保解决方案根目录存在nuget.config文件(VS创建项目时自动生成),其中配置了正确的NuGet源;若项目混合了PackageReference和packages.config,上述两种方法均可同时处理两类依赖的还原。

内容的提问来源于stack exchange,提问作者Jirka Picek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 09:40:10