发布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
相关产品推荐
相关产品推荐

