Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UWP MvvmCross引导类不工作_Mvvm_Xamarin_Nuget_Mvvmcross_Nuspec - Fatal编程技术网

UWP MvvmCross引导类不工作

UWP MvvmCross引导类不工作,mvvm,xamarin,nuget,mvvmcross,nuspec,Mvvm,Xamarin,Nuget,Mvvmcross,Nuspec,设置: MvvmCross插件Nuget: 具有包含mngr.ensureReplatFormatAdaptionLoaded()的典型PluginLoader.cs的可移植类库 具有包含Mvx.RegisterType()调用的UWP类库 打包并在UI项目中使用(下一步) MVVMUI项目: 有一个可移植类库和UWP UI项目 有一个Bootstrap.cs文件,具有典型的公共类TTSPluginBootstrap:mvxpluginbootstrap 有一个Setup.cs文件,带有

设置:

  • MvvmCross插件Nuget:
    • 具有包含
      mngr.ensureReplatFormatAdaptionLoaded()的典型PluginLoader.cs的可移植类库
    • 具有包含
      Mvx.RegisterType()
      调用的UWP类库
    • 打包并在UI项目中使用(下一步)
  • MVVMUI项目:
    • 有一个可移植类库和UWP UI项目
    • 有一个Bootstrap.cs文件,具有典型的
      公共类TTSPluginBootstrap:mvxpluginbootstrap
    • 有一个Setup.cs文件,带有典型的
      CreateApp
      返回
      Core.App()
问题:

  • 在my UI proj中包含Bootstrap.cs文件会导致
    setup.Initialize()
    App::OnLaunched期间崩溃
  • 删除Bootstrap.cs允许运行UWP UI proj,但
    Mvx.Resolve()
    调用会导致崩溃
  • 我还尝试在nuget打包期间包含*.pri和*.rd.xml文件,但没有成功
当前解决方法:

  • 删除Bootstrap.cs(或将生成类型设置为
    Content
  • 覆盖
    Setup::LoadPlugins
    • 或者手动强制使用
      Mvx.RegisterType
      进行类型注册,但是这种方法无法达到目的
    • 或者实例化
      MyPlugin.Uwp.Plugin
      ,并在其上调用
      Load
问题:

  • 如果我能够实例化Plugin类并对其调用Load,那么引导反射如何/为什么找不到PluginLoader
  • 我也尝试过AoT方式来声明我的引导类,那么还有什么可以尝试的呢
  • 关于创建/使用UWP MvvmCross插件(例如,非phone/store/8.1)是否有很好的参考
解决方案(以及达到该目的所采取的步骤):

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

是否有人知道任何正在工作的UWP UI应用程序能够成功地使用UWP NUGET(例如,非WindowsCommon、wpa8、win8)@Cheesebaron有一个插件可以被UWP应用程序使用,但这只能归功于他的WindowsCommon库。WindowsUWP部分没有任何作用。如果发布了MvvmCross UWP项目和插件的相关文档/教程,请发布,我很乐意接受另一个引用该部分的答案。