【问题标题】:MVVM Cross could not load plugin assembly for type MvvmCross.Plugins.Email.PluginLoaderMVVM Cross 无法加载 MvvmCross.Plugins.Email.PluginLoader 类型的插件程序集
【发布时间】:2015-12-08 20:51:52
【问题描述】:

我更新到 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 中有一些已知问题还是我的设置有问题?

谢谢 帕德鲁特

【问题讨论】:

    标签: c# mvvmcross


    【解决方案1】:

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

    但这是一个简单的解决方法:

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

    Mvx.RegisterType<IMvxComposeEmailTask, MvxComposeEmailTask>();

    评论或删除此插件的引导程序,它应该可以工作。

    编辑:MVVMCross(#1142) 的源代码上的错误已修复,但 NuGet 上仍然没有可用的新版本。

    【讨论】:

      【解决方案2】:

      由于程序集现在有版本号,因此您需要使用所有库的完全相同的版本,在您的情况下将是 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>
      

      【讨论】:

      • 插件是最新的。我还用你的代码在项目中添加了一个 app.config,但异常仍然发生。
      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        似乎我和其他人有同样的问题,但使用的是 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 命名空间。

        【讨论】:

        • mh,奇怪的是您没有在 Windows 设置中覆盖的 LoadPlugins 方法。愚蠢的问题,但你确定你继承自 MvxWindowsSetup?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-02
        • 1970-01-01
        • 1970-01-01
        • 2015-07-13
        相关资源
        最近更新 更多