mvvm - UWP MvvmCross Bootstrap类不起作用

标签 mvvm xamarin nuget mvvmcross nuspec

设置:

  • MvvmCross插件Nuget:
  • 有一个可移植类库,带有典型的PluginLoader.cs,其中包含mngr.EnsurePlatformAdaptionLoaded<...>()
  • 具有 UWP类库,带有典型的Plugin.cs,其中包含Mvx.RegisterType<...>()调用
  • 打包并在UI项目中使用(下一个)
  • MvvmCross UI项目:
  • 具有可移植类库和UWP UI项目
  • 具有 Bootstrap.cs文件,具有典型的public class TTSPluginBootstrap : MvxPluginBootstrapAction< MyPlugin.TTS.PluginLoader >
  • 具有 Setup.cs 文件,带有典型的CreateApp返回Core.App()

  • 问题:
  • 在我的UI项目中包含Bootstrap.cs文件会导致setup.Initialize()App::OnLaunched期间崩溃
  • 删除Bootstrap.cs可以运行UWP UI项目,但是Mvx.Resolve<...>()调用会导致崩溃
  • 我也尝试在nuget打包期间包括* .pri和* .rd.xml文件,但无济于事。

  • 当前解决方法:
  • 删除Bootstrap.cs(或将构建类型设置为Content)
  • 覆盖Setup::LoadPlugins:
  • 要么用Mvx.RegisterType<...>手动强制类型注册,但是这种目的失败了。
  • 或实例化MyPlugin.Uwp.Plugin,并在其上调用Load

  • 问题:
  • 如果我能够实例化Plugin类,并对其调用Load,那么Bootstrap反射如何/为什么无法找到PluginLoader?
  • 我也尝试了AoT方法来声明我的Bootstrap类,那么还有什么可以尝试的呢?
  • 在创建/使用UWP MvvmCross插件方面是否有很好的引用(例如,非phone/store/8.1)?
  • 最佳答案

    解决方案(以及到那里的步骤):

  • 步骤1:克隆MvvmCross存储库,并将分支更新为我在项目
  • 中使用的版本
  • 步骤2:删除了NuGet引用,并将w/local程序集引用替换为MvvmCross克隆
  • 步骤3:在App.xaml.cs中的setup.Initialize()调用之前逐步执行代码
  • 查找结果:在内部,MvvmCross使用反射获取PluginLoader实例,然后使用Setup类(在特定于平台的插件代码中查找Load方法)。
  • 此MvvmCross反射具有命名约定要求。
  • 修复:在制作与UWP兼容的MvvmCross插件时,您的UWP类lib项目必须以“WindowsUWP”(或“WindowsCommon”,如果可移植的话)结尾
  • 对我来说,这意味着将我的NuGet的Plugin.TTS.Uwp命名空间(和文件夹)更改为Plugin.TTS.WindowsUwp,然后重新打包并分发我的* .nupkg
  • 关于mvvm - UWP MvvmCross Bootstrap类不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34329985/

    相关文章:

    c# - 如何运行Main.axml?

    asp.net-core - 在project.json .Net Core中本地管理nuget

    c# - 如何在 Visual Studio 中启用 NuGet 包还原?

    ios - 如何在 iOS 应用程序中获取系统字体?

    android - Xamarin Forms - Webview 未显示在我的 StackLayout 中

    c# - 找不到引用 'RelativeSource FindAncestor' 的绑定(bind)源

    wpf - 将IEnumerable <T>与ObservableCollection <T>包装在一起

    visual-studio - 通过包管理器控制台从解决方案中删除项目

    ios - ID是否属于 View 模型

    .net - 在 MVVM 模型下,鼠标位置相关的 Action 应该如何发生?