我更新了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上,调整名称空间后,启动仍然可以正常运行。测试版3中是否存在一些已知问题,或者我的设置中是否存在错误?
由于 NPadrutt
答案 0 :(得分:3)
这是MVVMCross 4上的一个错误(因为它是测试版)。
但这是一个简单的解决方法:
在你的UWP Setup.cs上,覆盖方法LoadPlugins并添加:
Mvx.RegisterType<IMvxComposeEmailTask, MvxComposeEmailTask>();
评论或删除此插件的Bootstrap,它应该可以正常工作。
编辑:MVVMCross(#1142)的源代码修复了Bug,但NuGet上仍然没有新版本。
答案 1 :(得分:1)
由于程序集现在具有版本号,因此您需要与所有库的版本完全相同,在您的情况下,它们将是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>
答案 2 :(得分:0)
我在Windows 10 UWP上遇到了同样的问题。原因是我使用“WindowsStore”作为插件的UWP实现名称的后缀。当我修复此问题时,通过将后缀更改为“WindowsUWP”,插件正确加载。
感谢@CheeseBaron指出我正确的方向。
答案 3 :(得分:0)
似乎我和其他人有同样的问题,但使用PictureChooser插件,而不是电子邮件。看看为电子邮件提出的解决方案,出现了两件事。首先,没有任何覆盖“LoadPlugins&#39;在MvxWindowsSetup中。相反,我尝试对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();
}
注意,没有&#39; WindowsCommon&#39; PictureChooser的命名空间,所以我使用了&#39; WindowsStore&#39;这是作为块金包安装的结果而存在的。然后我排除了PictureChooserPluginLoader,我就可以继续了。看起来在PictureChooser插件的4.0.0.0-beta5版本中存在名称空间问题。
BTW:电子邮件插件加载得很好,并且从调试输出中能够解析WindowsCommon命名空间。