.NET 8 Web API项目名称含多段点在macOS无法启动,求合规解决办法
解决macOS上.NET 8长项目名启动报exit code 137的问题
exit code 137对应进程被SIGKILL信号终止,结合你改名短项目文件即可运行的现象,大概率是macOS环境下.NET CLI处理长项目文件名时的路径/进程名限制问题,以下是无需违反命名空间约定的解决方法:
方法1:修改程序集输出名称(推荐)
保持项目文件名My.Fancy.Name.Space.Service.csproj不变,在项目文件中添加AssemblyName配置,将编译后的程序集名称改为短名称:
<PropertyGroup> <!-- 保留符合命名空间约定的项目结构,仅修改输出程序集名 --> <AssemblyName>Service</AssemblyName> <!-- 若项目存在多个入口点,显式指定启动对象 --> <StartupObject>My.Fancy.Name.Space.Service.Program</StartupObject> </PropertyGroup>
修改后,无论是dotnet run还是IDE启动,都会使用短名称的程序集,避开长文件名带来的限制。
方法2:指定短路径输出目录
长项目名可能导致编译生成的临时文件路径超出macOS的路径长度限制,可手动指定更短的输出目录:
在csproj中添加:
<PropertyGroup> <OutputPath>../out/</OutputPath> </PropertyGroup>
或在命令行运行时临时指定:
dotnet run --output ../out
方法3:升级.NET 8 SDK到最新补丁版本
部分早期.NET 8 SDK版本存在macOS长文件名兼容bug,建议更新到最新的.NET 8 patch版本:
dotnet tool update --global dotnet-update-checker dotnet update
方法4:先发布再运行
跳过dotnet run的实时编译阶段,先将项目发布到短路径目录,再运行:
# 发布到当前目录下的publish文件夹 dotnet publish -c Release -o ./publish # 进入发布目录运行程序 cd publish dotnet My.Fancy.Name.Space.Service.dll
内容的提问来源于stack exchange,提问作者Felix Gerber
相关产品推荐
相关产品推荐

