如何在Mac M1上运行不被支持的.NET Core 2.0项目
解决Mac M1上运行.NET Core 2.0项目的方案
用Docker跑是最稳妥的选择
完全可以通过Docker隔离环境来运行,步骤如下:
- 先装Docker Desktop,记得开启Rosetta转译(因为.NET Core 2.0没有原生ARM镜像)
- 在项目根目录建个
Dockerfile,内容如下:
# 采用x86架构的.NET Core 2.0 SDK镜像 FROM mcr.microsoft.com/dotnet/core/sdk:2.0-stretch AS build WORKDIR /app # 复制项目文件并还原依赖 COPY *.csproj ./ RUN dotnet restore # 复制所有代码并构建发布 COPY . ./ RUN dotnet publish -c Release -o out # 基于运行时镜像启动项目 FROM mcr.microsoft.com/dotnet/core/runtime:2.0-stretch AS runtime WORKDIR /app COPY --from=build /app/out ./ ENTRYPOINT ["dotnet", "你的项目文件名.dll"]
- 把代码里的
你的项目文件名.dll替换成你实际的项目输出DLL名称 - 终端执行构建命令:
docker build -t dotnet20-app . - 启动容器运行项目:
docker run -it --rm dotnet20-app
本地通过Rosetta转译运行
如果不想用Docker,也可以借助Rosetta 2模拟x86环境:
- 打开终端,输入
arch -x86_64 zsh切换到x86终端环境 - 下载.NET Core 2.0 SDK的x86版本(微软官方已下架,需找存档或第三方镜像获取)
- 安装完成后,在这个x86终端里直接运行项目安装程序,或者用
dotnet run启动项目
长期最优方案:升级项目.NET版本
如果项目允许修改,建议直接升级到.NET 6及以上版本——这些版本原生支持M1的ARM架构,无需额外折腾:
- 修改
.csproj文件里的TargetFramework节点,比如从netcoreapp2.0改为net6.0 - 修复升级过程中出现的API兼容问题
- 直接在VS2022中运行项目即可
内容的提问来源于stack exchange,提问作者Dragonknot
相关产品推荐
相关产品推荐

