公司动态

Ryujinx源码构建:三个常见卡点逐个拆解

📅 2026/9/2 11:33:25
Ryujinx源码构建:三个常见卡点逐个拆解
Ryujinx源码构建三个常见卡点逐个拆解【免费下载链接】Ryujinx用 C# 编写的实验性 Nintendo Switch 模拟器项目地址: https://gitcode.com/GitHub_Trending/ry/RyujinxRyujinx 是一个用 C# 编写的开源 Nintendo Switch 模拟器构建走的是纯 .NET CLI 路线装好 SDK、克隆代码就能编译不需要 Visual Studio。但真正卡住人的往往不是编译这一步而是另外三件事dotnet build一上来就报 SDK 版本错误、构建成功了却找不到能运行的主程序、以及 build 出来的东西和可以分发包的 publish 完全是两回事。下面按现象逐个拆。先把代码拉下来后文所有路径都相对仓库根目录git clone https://gitcode.com/GitHub_Trending/ry/Ryujinx克隆完成后进入目录整个仓库只有一个 Ryujinx.sln 解决方案三十多个项目全在里面。dotnet build 报 SDK 版本错误先看 global.json报错信息怎么读最常见的失败发生在还没编译任何代码之前dotnet 直接拒绝工作提示当前 SDK 不满足要求。元凶是 global.json——它把版本锁在8.0.100并把 rollForward 设为latestFeature。这个语义是同一大小版本内允许任意 8.0.x但不跨大版本所以只装 .NET 9 SDK 的机器照样会挂必须装 8.0.x 线8.0.100 及以上。顺带检查 NuGet 源nuget.config 会清空所有已配置源、只保留官方源。如果公司环境里全局配了私有源镜像restore 阶段就可能在这里断掉——遇到包解析异常时先想到它而不是怀疑网络。本机核对与构建dotnet --list-sdks确认列表里有 8.0.x 之后在项目根目录执行dotnet build -c Release -o build这条命令按 Release 模式编译整个解决方案产物统一输出到build目录。首次构建会先还原所有 NuGet 包耗时明显更长属正常现象。构建成功了但找不到主程序产物目录里为什么有多个可执行文件build目录里不止一个可执行程序因为解决方案里有三个可执行入口主程序 RyujinxAvalonia 跨平台界面、老式的 Ryujinx.Gtk3以及无窗口的 Ryujinx.Headless.SDL2供无显示器环境做自动化测试。官方 CI 里三个会分别单独发布见 .github/workflows/build.yml。日常运行只需要同名主程序那个其余两个可以无视。模拟器的数据不在 build 里别在 build 目录里找配置和系统文件。Ryujinx 运行时会在用户目录下建一个Ryujinx文件夹Config.json、密钥、存档都存那里界面 File 菜单里的 Open Ryujinx Folder 可以直接跳过去。另外图形侧要求 OpenGL 4.5、Vulkan 或 Metal经 MoltenVK启动报图形相关错误时先确认显卡驱动支持哪一套。build 不等于 publish本地编译与可分发包的区别publish 做了什么给 src/Ryujinx/Ryujinx.csproj 带上运行时标识符RID时项目会自动开启 PublishSingleFile 和 PublishTrimmed产物是单文件、裁剪过的自包含包目标机器不装 SDK 也能跑。比如这样dotnet publish -c Release -r win-x64 --self-contained -o out src/Ryujinx它会输出到out目录RID 可按平台选 win-x64、osx-x64、linux-x64 等。本地想验证别人机器上能不能跑就该用这套而不是 build。⚠️ ### macOS 多一道签名工序在 macOS 上构建时PostBuild 目标会自动跑 codesign 并引用 entitlements 文件见 Ryujinx.csproj跳过它程序可能被系统拦下来。官方发布包则是在 Linux 上用 distribution/macos/create_macos_build_ava.sh 交叉出通用二进制并用 rcodesign 远程签名——本地要出可分发包时照这个脚本的思路走。官方 PR 流程和你本地做的是同一件事checks.yml 先跑 dotnet format 格式校验再走 build 加dotnet testmaster 推新包则由 release.yml 按平台矩阵 publish、打包并打 tag。接下来可以做什么第一次跑起来别嫌慢PPTCProfiled Persistent Translation Cache持久化翻译缓存默认开启同一款游戏要启动两次到标题画面第三次开始才真正快这是预期行为。之后可以跑dotnet test确认 CPU 与内存相关测试套件通过或者从 docs/README.md 开始读项目文档往 ARMeilleure 源码里钻。【免费下载链接】Ryujinx用 C# 编写的实验性 Nintendo Switch 模拟器项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考