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付出了惨痛代价……