如何将.Net Core 2.2应用从GitLab流水线部署到Plesk共享服务器IIS并解决msdeploy路径错误
报错根因
你当前使用的mcr.microsoft.com/dotnet/sdk:3.1-focal是Linux系统镜像,而msdeploy.exe是Windows平台专属的IIS部署工具,Linux环境中不存在该程序,因此dotnet publish调用MSDeploy时会报路径无效错误。
可行解决方案
方案1:切换为Windows类型的GitLab Runner(适配MSDeploy最优解)
直接更换流水线的运行节点为Windows系统的GitLab Runner,提前在Runner上安装以下依赖:
- .NET Core 2.2 SDK(匹配你的应用版本
- Microsoft Web Deploy V3
调整后的流水线配置无需大幅修改,原有publish命令可直接执行,就能正常调用本地的msdeploy.exe完成部署。
方案2:Linux Runner下拆分构建+部署步骤(无MSDeploy依赖)
如果只能使用Linux Runner,拆分构建和部署流程,避开MSDeploy依赖:
- 第一步先在Linux环境下构建出独立发布包,输出为构建产物:
publish-to-dev: stage: publish-to-dev image: mcr.microsoft.com/dotnet/sdk:3.1-focal script: - dotnet build - dotnet publish -c Release -o ./publish artifacts: paths: - ./publish/
- 第二步将构建产物部署到Plesk服务器,可选两种方式:
- 若Plesk站点开通了FTP/SFTP权限,直接通过lftp/sftp命令将publish目录下的所有文件上传到IIS站点对应根目录即可
- 若Plesk开放了Web Deploy的远程发布接口,可调用跨平台的Web Deploy客户端工具推送发布包
额外注意事项
- 确认Plesk侧的站点配置已开启.NET Core支持,对应应用池配置匹配的运行时版本
- .NET Core 2.2已经停止官方支持,建议尽快升级到.NET 6/.NET 8等LTS版本,避免安全和兼容问题
内容的提问来源于stack exchange,提问作者Tito
相关产品推荐
相关产品推荐

