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

运行nuget restore project.csproj时遇MSB4086错误,寻求解决

解决NuGet Restore时MSB4086错误(MSBuildAssemblyVersion为空)

错误原因

你遇到的错误是因为NuGet生成的临时restore目标文件中,存在条件判断'$(MSBuildAssemblyVersion)' < '15.0',但你的MSBuild 4.8版本并未定义MSBuildAssemblyVersion属性,导致该属性值为空,无法完成数值比较,从而触发MSB4086错误。

解决办法

  • 方法1:手动指定MSBuildAssemblyVersion属性
    执行nuget restore时,通过/p参数手动传入该属性值(对应MSBuild 4.8版本可设为4.8):

    nuget restore project.csproj /p:MSBuildAssemblyVersion=4.8
    

    或者直接用MSBuild命令执行restore:

    msbuild project.csproj /t:Restore /p:MSBuildAssemblyVersion=4.8
    
  • 方法2:升级MSBuild版本
    该错误本质是旧版MSBuild与新版NuGet工具不兼容导致。若环境允许,升级到MSBuild 15.0及以上版本(比如Visual Studio 2017及以上自带的MSBuild,路径通常为C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin),新版本会自动定义MSBuildAssemblyVersion属性,从根源避免问题。

  • 方法3:临时修改NuGet目标文件(仅应急用)
    找到报错的临时目标文件(如C:\Windows\TEMP\NuGetScratch\q43aqbtc.toq.nugetrestore.targets),定位到第459行的条件,修改为同时判断属性是否为空:

    Condition="'$(MSBuildAssemblyVersion)' == '' OR '$(MSBuildAssemblyVersion)' < '15.0'"
    

    注意:此方法是临时修复,NuGet每次restore都会重新生成临时文件,下次执行仍可能报错,仅适合紧急场景。

内容的提问来源于stack exchange,提问作者mansing shinde

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:52:45