安装VS2022 for Mac预览版后.NET 6项目构建后无法运行如何解决
问题根因
- .NET默认构建的是*框架依赖部署(FDD)*模式的产物,这种模式下生成的可执行文件仅为运行引导文件,本身不携带运行时配置,必须依赖同目录下的
runtimeconfig.json文件定位系统安装的.NET运行时。 - 你当前未生成该配置文件,是Visual Studio 2022 for Mac预览版自带的.NET 6项目模板存在配置缺陷,默认关闭了运行时配置文件的生成开关。
- 直接执行可执行文件时,系统检测不到
runtimeconfig.json,会默认按照自包含部署模式运行,去全局dotnet安装目录查找运行时核心库libhostpolicy.dylib,但框架依赖模式不会将该库打包到产物目录,因此触发报错。
解决方案
你不需要手动创建runtimeconfig.json文件,任选以下任意一种方案即可解决问题:
方案1:使用标准命令运行框架依赖产物
默认构建完成后,不要直接执行二进制文件,通过dotnet命令启动程序集即可:
% dotnet ./bin/Debug/net6.0/dotnet6-test.dll
方案2:修改项目配置强制生成运行时配置文件
编辑项目根目录下的.csproj文件,在<PropertyGroup>节点中添加如下配置:
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
保存后重新执行dotnet build,构建过程会自动生成runtimeconfig.json文件,之后就可以直接执行可执行文件。
方案3:使用自包含模式构建
就是你已经验证可用的方式,添加-r osx.11.0-x64 --self-contained参数构建,这种模式会将.NET运行时和所有依赖库都打包到产物中,不需要依赖系统安装的.NET运行时,也不需要runtimeconfig.json文件就能直接运行。
内容的提问来源于stack exchange,提问作者Igor Lankin
相关产品推荐
相关产品推荐

