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

发布dotnet应用时如何指定使用特定版本的dotnet core SDK

解决方案

方案1:使用global.json固定项目SDK版本(推荐)

  • 首先运行dotnet --list-sdks命令,查看本机已安装的.NET 5 SDK完整版本号,比如输出里的5.0.408 [C:\Program Files\dotnet\sdk]就是可用版本。
  • 在你项目的根目录(和.csproj文件同级,或者解决方案根目录)新建名为global.json的文件,写入以下内容:
{
  "sdk": {
    "version": "5.0.408",
    "rollForward": "disable"
  }
}

注意把version的值替换成你自己查到的.NET 5 SDK版本号。

  • 验证配置是否生效:在项目目录下运行dotnet --version,输出的版本号和你指定的一致即为配置成功,此时再运行发布命令就会自动使用指定的5.0版本SDK,不会调用VS2022的预览版SDK。

方案2:脚本临时指定SDK版本(无需修改项目文件)

如果你不想改动项目配置,可以直接修改PowerShell脚本,在发布逻辑前临时指定SDK版本:

$version  =  "6.12.0"
$product  =  "CrystalERP"
$project  =  "I:\CrystalRelease\crystal.erp\crystal.pos.cafe\Crystal.Pos.Cafe.csproj"
$output  =  "I:\App"
$dotnet  =  "C:\Program Files\dotnet\dotnet.exe"
$runtimes  = @(
"linux-x64"
)
# 临时创建global.json指定SDK版本,替换为你自己的5.0 SDK版本号
@"
{
  `"sdk`": {
    `"version`": `"5.0.408`",
    `"rollForward`": `"disable`"
  }
}
"@ | Out-File -FilePath (Join-Path (Split-Path $project) "global.json") -Encoding utf8

# 清理之前的发布版本
Remove-Item "$output\App*"  -Recurse -Confirm:$true
$runtimes  |  %{
&  $dotnet publish $project  -c release   -r $_  -o ("{0}\{1}"  -f $output,"App")
}

# 发布完成后删除临时创建的global.json
Remove-Item (Join-Path (Split-Path $project) "global.json") -Force

方案3:直接指定SDK路径

你也可以直接在发布命令中指定使用.NET 5 SDK的路径,不用修改任何配置文件,把发布命令改成如下格式即可(替换为你本机的5.0 SDK实际路径):

& $dotnet publish $project -c release -r $_ -o ("{0}\{1}" -f $output,"App") /p:SDKRootPath="C:\Program Files\dotnet\sdk\5.0.408\"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:45:04