MacOS环境下Reinforced.Typings找不到dotnet.exe报错如何解决
问题修复方案
根因
你判断的问题核心正确,Reinforced.Typings 1.6.1版本的MSBuild任务硬编码了Windows平台的dotnet.exe作为dotnet运行时入口,没有适配MacOS/Linux平台无后缀的dotnet可执行文件,导致程序找不到执行文件报错。
修复方案(按优先级排序)
方案1:添加配置项指定dotnet执行命令(推荐,无需改版本)
在你的Reinforced.Typings.settings.xml的PropertyGroup节点内新增一行配置,手动指定dotnet执行程序名:
<RtDotnetCmd>dotnet</RtDotnetCmd>
修改后的完整配置如下:
<?xml version="1.0" encoding="UTF-8" ?> <Project> <PropertyGroup> <RtDotnetCmd>dotnet</RtDotnetCmd> <RtForceTargetFramework>net5.0</RtForceTargetFramework> <RtTargetFile>$(ProjectDir)/contracts.d.ts</RtTargetFile> <RtConfigurationMethod>MyProject.Core.ReinforcedTypingsConfiguration.Configure</RtConfigurationMethod> <RtDivideTypesAmongFiles>false</RtDivideTypesAmongFiles> <RtBypassTypeScriptCompilation>false</RtBypassTypeScriptCompilation> <RtDisable>false</RtDisable> </PropertyGroup> </Project>
修改后重新编译项目即可正常生成类型定义。
方案2:升级Reinforced.Typings版本
该跨平台兼容问题在1.6.2及更高版本中已被官方修复,你可以直接将NuGet包Reinforced.Typings升级到1.6.x系列的最新稳定版,无需修改任何配置即可正常运行。
方案3:临时兼容软链接(不推荐)
如果以上方案都无法执行,可手动创建dotnet.exe软链接指向系统原生dotnet程序:
sudo ln -s /usr/local/share/dotnet/dotnet /usr/local/bin/dotnet.exe
该方法会在系统全局留下多余的兼容文件,仅作为临时应急方案使用。
验证前提
执行修复前请先在终端运行dotnet --version,确认dotnet 5 SDK已正确安装且全局环境变量配置正常。
内容的提问来源于stack exchange,提问作者Kvam
相关产品推荐
相关产品推荐

