【问题标题】:Can't run MVVMcros Xamarin.Forms project无法运行 MVVMcros Xamarin.Forms 项目
【发布时间】:2017-06-11 18:48:50
【问题描述】:

我正在尝试使用 Xamarin.Forms 配置 MVVMCross。所以我正在创建 XF 项目,为视图模型添加另一个 PCL 项目。接下来我正在安装所需的 MVVMCross nuget,包括 Mvvmcross.StarterPack、MVVMCross.Forms 和 MVVMCross.Presentation。然后我正在从自动创建的垃圾箱中清理项目。到这一刻,一切都在建立。但是当我在构建时将 XF MainPage.xaml ContentPage 更改为 MvxContentPage 时出现以下错误:

    The "ResolveLibraryProjectImports" task failed unexpectedly.
System.IO.FileNotFoundException: Could not load assembly 'StormFinder, Version=0.0.0.0, Culture=neutral, PublicKeyToken='. Perhaps it doesn't exist in the Mono for Android profile?
File name: 'StormFinder.dll'
   at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters)
   at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(String fullName, ReaderParameters parameters)
   at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(String fullName)
   at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.GetAssembly(String fileName)
   at Xamarin.Android.Tasks.ResolveLibraryProjectImports.Extract(DirectoryAssemblyResolver res, ICollection`1 jars, ICollection`1 resolvedResourceDirectories, ICollection`1 resolvedAssetDirectories, ICollection`1 resolvedEnvironments)
   at Xamarin.Android.Tasks.ResolveLibraryProjectImports.Execute()
   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext() StormFinder.Android     

StormFinder 是我的 XF UI 项目。我已经尝试了一切,包括清理、重新安装 XF、MVVMCross 甚至开始新项目。

我能做什么?
编辑: 项目可以在那里找到:https://github.com/straiser/StormFinder

编辑2: xaml 中的命名空间错误。项目正在建设中,但现在我遇到了另一个错误:

 System.TypeLoadException: Parent class vtable failed to initialize, due to: Type MvvmCross.Forms.Presenter.Core.MvxFormsPagePresenter has invalid vtable method slot 7 with method MvvmCross.Core.Views.MvxViewPresenter:Close (MvvmCross.Core.ViewModels.IMvxViewModel) assembly:/storage/emulated/0/Android/data/StormFinder.Android/files/.__override__/MvvmCross.Forms.Presenter.Core.dll type:MvxFormsPagePresenter member:<none>
06-12 18:52:19.744 E/mono-rt ( 1784): [ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: Parent class vtable failed to initialize, due to: Type MvvmCross.Forms.Presenter.Core.MvxFormsPagePresenter has invalid vtable method slot 7 with method MvvmCross.Core.Views.MvxViewPresenter:Close (MvvmCross.Core.ViewModels.IMvxViewModel) assembly:/storage/emulated/0/Android/data/StormFinder.Android/files/.__override__/MvvmCross.Forms.Presenter.Core.dll type:MvxFormsPagePresenter member:<none>

【问题讨论】:

  • 您的 XF UI 项目是 PCL?还是共享?您是否从您的平台项目中引用过它?如果可以,请上传示例项目。这将有助于缩小问题范围。
  • @woelliJ 我的 XF 是 PCL,它被引用了。我将项目推送到 github。链接在帖子中。

标签: xamarin xamarin.forms mvvmcross


【解决方案1】:

您需要在您的MainPage 中包含MvxContentPage 的命名空间。

它需要看起来像这样:

<?xml version="1.0" encoding="utf-8" ?>
<core1:MvxContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:StormFinder"
              xmlns:core="clr-namespace:MvvmCross.Forms.Presenter.Core;assembly=MvvmCross.Forms.Presenter.Core"
              xmlns:core1="clr-namespace:MvvmCross.Forms.Core;assembly=MvvmCross.Forms"
              x:Class="StormFinder.MainPage">

    <Label Text="{Binding Text}" 
           VerticalOptions="Center" 
           HorizontalOptions="Center" />
    <!-- core:MvxContentPage -->
</core1:MvxContentPage>

【讨论】:

  • 谢谢。它现在正在构建中,但请查看我的帖子中的 EDIT2。
  • 好吧,没关系。我解决了这个问题。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-05
  • 2019-03-17
  • 2015-01-12
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
相关资源
最近更新 更多