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

在Windows Server 2012上用MSBuild构建.NET 6项目遇版本字符串错误

解决方案

问题分析

本地构建正常但服务器上出现NETSDK1004错误,是因为服务器未执行NuGet包还原;后续添加restore目标后出现版本号错误,根源是IBM RTC传入的v1.0.27带v前缀,不符合NuGet版本号规范(NuGet版本号不能包含v前缀)。

具体解决步骤

1. 修正版本号格式

RTC触发构建时传入的版本号带v前缀,需要先移除前缀再用于构建:

  • 若通过RTC流水线参数传递版本号,直接修改参数值为1.0.27(去掉v)。
  • 若无法修改流水线参数,可在批处理脚本中添加字符串处理逻辑提取纯版本号:
    @echo off
    :: 假设RTC传入的版本号存于VERSION变量
    set "VERSION=v1.0.27"
    set "PURE_VERSION=%VERSION:v=%"
    

2. 拆分还原与构建命令

避免将restore和rebuild放在同一条MSBuild命令中,分开执行更稳定:

:: 单独执行NuGet还原,传入处理后的纯版本号
%MSBUILDPATH% C:\source\EMS\EMS.sln /t:restore /p:Configuration=Release /p:Version=%PURE_VERSION%

:: 执行重建操作
%MSBUILDPATH% C:\source\EMS\EMS.sln /t:rebuild /p:Configuration=Release /p:Version=%PURE_VERSION%

3. 清理服务器NuGet缓存

若服务器存在缓存损坏问题,执行清理命令:

dotnet nuget locals all --clear

4. 验证服务器环境配置

  • 确认%MSBUILDPATH%指向正确的MSBuild版本(对应.NET 6的MSBuild可在C:\Program Files\dotnet\sdk\6.0.401\MSBuild.dll或VS BuildTools路径中找到)。
  • 用dotnet --version命令验证服务器已安装.NET 6 SDK 6.0.401版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 19:28:23