从Azure DevOps部署.NET Core 5应用到Azure Linux Web App时出现TypeError: Cannot read property 'updateStartupCommandAndRuntimeStack' of undefined错误
根据你描述的报错和日志信息,这个TypeError: Cannot read property 'updateStartupCommandAndRuntimeStack' of undefined错误通常和Azure App Service Deploy任务的版本或运行时配置有关,下面是几个针对性的解决办法:
1. 升级Azure App Service Deploy任务版本
旧版本的部署任务对.NET Core 5的Linux环境支持可能存在兼容性问题。你可以在DevOps管道的部署步骤里,把Azure App Service Deploy任务切换到最新的v4版本(或更高)——新版本修复了不少针对Linux运行时的配置Bug,大概率能解决这个未定义属性的错误。
2. 手动指定Runtime Stack值
既然你的Runtime Stack下拉菜单没有可选值,说明任务没能自动识别目标App Service的环境。你可以手动填写Runtime Stack参数,对于.NET Core 5的Linux环境,格式为:
DOTNETCORE|5.0
注意要严格按照运行时标识|版本号的格式填写,不要留空或者填错误的格式。
3. 确认目标App Service的运行时配置
先登录Azure门户,找到你的Linux Web App,进入Configuration > General Settings页面,确认Runtime stack已经设置为.NET Core 5.0 (Linux)。如果这里没配置正确,DevOps的部署任务就无法获取到对应的运行时元数据,从而触发报错。配置完成后,重新触发部署管道试试。
4. 重新创建部署任务
有时候任务的缓存配置会出现异常,你可以删除当前的Azure App Service Deploy任务,然后重新添加一个新的部署任务,从头配置所有参数(包括Runtime Stack和Startup Command),避免旧配置的干扰。
5. 检查Startup Command配置
如果不需要自定义启动命令,直接留空即可——Azure会自动检测并使用默认的启动命令(比如dotnet YourApp.dll)。如果需要自定义,确保命令格式正确,比如:
dotnet MyCoreApp.dll --environment Production
从你的日志来看,Kudu同步和包上传都已经成功,只是在后续更新运行时和启动命令的步骤出错,所以重点检查上述几个配置项应该就能解决问题。
内容的提问来源于stack exchange,提问作者Tompi

