C# 使用libsodium-net运行时出现SodiumCore类型初始化异常求助
问题根因
你遇到的MissingMethodException与C++可再发行组件无关,核心原因是libsodium-net包已停止维护近10年,仅支持.NET Framework环境,不兼容.NET Core/.NET 5及更高版本的.NET运行时。旧版libsodium-net调用的AppDomain.DefineDynamicAssemblyAPI在.NET Core之后的版本中已被移除,因此运行时会触发方法找不到异常。
解决方案1:替换为当前维护的libsodium封装包(推荐)
直接弃用旧的libsodium-net,改用社区维护的Sodium.Core包,该包是libsodium-net的分支,完美适配所有新版.NET环境:
- 右键你的项目,选择「管理NuGet程序包」
- 卸载已安装的
libsodium-net包 - 搜索安装
Sodium.Core最新稳定版 - 原有代码几乎不需要修改,命名空间仍为
Sodium,原有API完全兼容
解决方案2:必须使用原版libsodium-net的场景
需要将项目的目标框架切换为.NET Framework 4.x版本,步骤如下:
- 右键项目选择「属性」
- 在「应用程序」标签下的「目标框架」下拉菜单中选择
.NET Framework 4.8或其他4.x版本 - 保存修改后重新构建项目即可
C++可再发行组件安装失败解决
如果后续遇到需要安装不同版本VC++运行时遇到冲突,可以用微软官方的安装故障排除工具清理损坏的安装注册表项,之后即可正常安装对应版本的运行时组件。
内容的提问来源于stack exchange,提问作者kaashif
相关产品推荐
相关产品推荐

