MVVM Cross 无法加载类型 MvvmCross.Plugins.Email.PluginLoader 的插件程序集

MVVM Cross could not load plugin assembly for type MvvmCross.Plugins.Email.PluginLoader

我更新到 MvvmCross Beta 3。现在它似乎无法在 Windows 10 UWP 上找到我的插件了。

启动时抛出此异常:

An exception of type 'Cirrious.CrossCore.Exceptions.MvxException' occurred in Cirrious.CrossCore.dll but was not handled in user code

Additional information: could not load plugin assembly for type MvvmCross.Plugins.Email.PluginLoader

我通过 NuGet 添加了邮件插件,并在项目中添加了引导程序:

using Cirrious.CrossCore.Plugins;

namespace MoneyManager.Windows.Bootstrap
{
    public class EmailPluginBootstrap
        : MvxPluginBootstrapAction<MvvmCross.Plugins.Email.PluginLoader>
    {
    }
}

您可以在 GitHub 上找到存储库:https://github.com/NPadrutt/MoneyManager

在 Android 上,调整命名空间后,启动仍然没有任何问题。 Beta 3 中是否存在一些已知问题或我的设置有误?

谢谢 NPadrutt

由于程序集有版本号,现在您需要使用完全相同的所有库版本,在您的情况下为 MvvmCross 4.0-beta3。

您也可以尝试将此添加到您的 app.config:

  <dependentAssembly>
    <assemblyIdentity name="Cirrious.CrossCore" publicKeyToken="e16445fd9b451819" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
  </dependentAssembly>

这是 MVVMCross 4 上的一个错误(因为它是测试版)。

但这是一个简单的修复:

在您的 UWP Setup.cs 上,覆盖方法 LoadPlugins 并添加:

Mvx.RegisterType<IMvxComposeEmailTask, MvxComposeEmailTask>();

评论或删除此插件的 Bootstrap,它应该可以工作。

编辑:修复了 MVVMCross(#1142) 源代码中的错误,但 NuGet 上仍未提供新版本。

我刚刚在 Windows 10 UWP 上遇到了同样的问题。原因是我使用 "WindowsStore" 作为插件的 UWP 实现名称的后缀。当我修复此问题时,通过将后缀更改为 "WindowsUWP",插件正确加载。

感谢@CheeseBaron 为我指明了正确的方向。

我似乎遇到了与其他人相同的问题,但使用的是 PictureChooser 插件,而不是电子邮件。查看为电子邮件提出的解决方案,出现了两件事。首先,在 MvxWindowsSetup 中没有覆盖 'LoadPlugins'。相反,我尝试对 setup.cs 进行以下更改:

using MvvmCross.Plugins.PictureChooser;
using MvvmCross.Plugins.PictureChooser.WindowsStore;
using Cirrious.CrossCore.Plugins;

. . .

protected override IMvxPluginManager CreatePluginManager()
{
    Mvx.RegisterType<IMvxPictureChooserTask, MvxPictureChooserTask>();
    return base.CreatePluginManager();
}

请注意,PictureChooser 没有 'WindowsCommon' 命名空间,因此我使用了 'WindowsStore',它作为 nugget 包安装的结果存在。然后我排除了 PictureChooserPluginLoader 并且我能够继续。看起来 PictureChooser 插件的 4.0.0.0-beta5 版本中存在命名空间问题。

顺便说一句:电子邮件插件加载得很好,调试输出能够解析 WindowsCommon 命名空间。