MvvmCross 从 6.4.2 升级到 8.0.1

Posted

技术标签:

【中文标题】MvvmCross 从 6.4.2 升级到 8.0.1【英文标题】:MvvmCross upgrade from 6.4.2 to 8.0.1 【发布时间】:2021-09-13 17:56:48 【问题描述】:

我最近将 MvvmCross 从 6.4.2 升级到了 8.0.1 版本。 Xamarin.android 和 Core 项目都具有相同的 nuget 包版本。

在 ViewModel 中升级后在线:IMvxMessenger mvxMessenger = Mvx.IoCProvider.Resolve<IMvxMessenger>(); 我收到一个错误Failed to resolve type MvvmCross.Plugin.Messenger.IMvxMessenger

有人遇到过这样的问题吗?

【问题讨论】:

您是否也将 Messenger 插件更新到了 8.0.1?您是否尝试在安装程序运行之前解决该问题? @fmaccaroni 是的,我也更新了 Messenger 插件。不,我在安装程序运行后解决这个问题 Mvx.IoCProvider.CanResolve<IMvxMessenger>(); 返回 false 吗? 如果我是你,我会在你的设置中覆盖 LoadPlugins 并执行与 Mvx 框架 github.com/MvvmCross/MvvmCross/blob/8.0.1/MvvmCross/Core/… 中相同的代码并检查 Messenger 插件是否在那里加载 【参考方案1】:

这与 GitHub 上记录的此问题有关。https://github.com/MvvmCross/MvvmCross/issues/4286

onurhazar10 月 8 日评论:

我们在尝试加载 MvxMessenger 插件时遇到了同样的问题。 它在应用程序启动时引发异常(仅限设备)(ios)。作为一个 解决方法,您可以覆盖 Setup.cs 中的 LoadPlugins 方法,例如 下面;

public override void LoadPlugins(IMvxPluginManager pluginManager)

      base.LoadPlugins(pluginManager);

      pluginManager.EnsurePluginLoaded<MvvmCross.Plugin.Messenger.Plugin>();

【讨论】:

【参考方案2】:

我从未使用过 6.4.2 版本,但你可以尝试在初始化/设置时添加它

Mvx.IoCProvider.RegisterSingleton<IMvxMessenger>(() => new MvxMessengerHub());

这适用于 7.1.2 版本

【讨论】:

以上是关于MvvmCross 从 6.4.2 升级到 8.0.1的主要内容,如果未能解决你的问题,请参考以下文章

Mvvmcross 8.0.2 Android MvxDialogFragment 没有用后退按钮关闭

将 MobileFirst JavaScript 适配器从 7.1 升级到 8.0 时替换轮询事件源

从 MySQL 5.6 升级到 MySQL 8.0,Facebook 付出了什么代价?

从MySQL 5.6升级到8.0,Facebook付出了惨痛代价……

从MySQL 5.6升级到8.0,Facebook付出了惨痛代价……

从 Sitecore 8.0 升级后启动板设计未加载