.NET 9.0 ASP.NET Core应用编译正常但启动失败(退出码137)
问题原因及解决方法
核心原因
问题出在AppHost生成机制上:.NET 9默认启用UseAppHost=true,会生成平台原生可执行文件作为启动入口。你复制项目到新路径后,旧的bin/obj目录残留了带有旧路径依赖的AppHost文件,或者新路径含特殊字符导致AppHost生成异常,使得本地直接调用AppHost启动失败;而Docker中使用/p:UseAppHost=false跳过了AppHost生成,直接用.NET Runtime托管运行,因此能正常启动。
具体解决步骤
- 清理编译残留:删除项目根目录下的
bin和obj文件夹,彻底清除旧编译产物后重新编译启动。 - 临时绕开AppHost测试:执行命令
dotnet run --project App /p:UseAppHost=false,如果能正常启动,即可确认是AppHost的问题。 - 永久禁用AppHost(可选):在项目的
.csproj文件中添加以下配置,和Docker保持一致:<PropertyGroup> <UseAppHost>false</UseAppHost> </PropertyGroup> - 检查路径合法性:确保项目所在新文件夹路径没有空格、中文或其他非ASCII特殊字符,这类字符可能导致AppHost生成时路径解析错误。
- 重置Rider缓存:Rider可能缓存了旧项目配置,通过
File > Invalidate Caches...清理缓存并重启IDE后再尝试启动。
内容的提问来源于stack exchange,提问作者tonsteri
相关产品推荐
相关产品推荐

