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

如何用PowerShell下载NuGet包 解决.NET项目MSBuild构建报错

解决方法

问题根源

本地用Visual Studio能正常构建,是因为VS默认会在构建前自动执行NuGet包还原流程,但直接在PowerShell中调用MSBuild.exe不会自动触发这一步。你的项目是传统.NET Framework项目,采用packages.config格式管理依赖,不会自动拉取缺失包到本地packages目录,自然会报找不到MaterialDesignThemes.targets的错误。

操作步骤

  • 准备NuGet命令行工具
    你可以提前把nuget.exe放到代码仓库中,或者在PowerShell脚本中拉取对应版本的nuget.exe到CI工作目录,保证运行环境可以直接调用NuGet命令。
  • 构建前先执行包还原
    一定要在调用MSBuild之前先跑还原命令,优先指向解决方案.sln文件,不要只传单个项目文件,避免漏掉关联依赖。注意指定还原的包目录和你项目里引用的路径一致,也就是报错信息里提到的../packages目录,示例命令:
    ./nuget.exe restore 你的项目解决方案名.sln -PackagesDirectory ../packages
    
    如果你项目配置了私有NuGet源,追加-ConfigFile参数指向项目内的NuGet.Config配置文件即可。
  • 执行MSBuild构建
    还原完成后再跑构建命令即可。如果是在GitHub Action的Windows运行环境中,不建议硬编码VS2017的MSBuild路径,用系统自带的vswhere工具自动定位MSBuild路径更稳妥,不会因为环境内VS版本变动导致路径失效,定位和构建的示例命令:
    $msbuildPath = & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\MSBuild.exe | Select-Object -First 1
    & $msbuildPath 你的项目解决方案名.sln /t:Rebuild /p:Configuration=Release
    

避坑提示

  • 不要跳过还原步骤直接构建,传统.NET Framework的packages.config格式依赖不支持MSBuild自动还原
  • 还原时的包目录路径必须和项目文件里写的引用路径完全匹配,不然就算包下载到本地,还是会报找不到文件的错
  • 如果还原时提示找不到某个包,先检查NuGet源配置是否正确,不要直接跳过错误去跑构建

内容的提问来源于stack exchange,提问作者Hyunjin-Kim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:03:19