我在WP8项目中使用MvxEventToCommand时遇到构建错误

时间:2013-05-29 20:42:49

标签: windows-phone-8 mvvmcross

我正在使用MvvmCross框架来创建一个Windows Phone 8项目。 在我的xaml中的WP8项目中,我有以下内容:

<i:Interaction.Triggers >
   <i:EventTrigger EventName="Tap">
      <Commands:MvxEventToCommand Command="{Binding OnItemTappedCommand}" />
   </i:EventTrigger >
</i:Interaction.Triggers>

我的命名空间如下:

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 

xmlns:Commands="clr-namespace:Cirrious.MvvmCross.WindowsPhone.Commands;assembly=Cirrious.MvvmCross.WindowsPhone"

当我尝试构建时,我收到错误:

无法解析对程序集'System.Windows.Interactivity,Version = 3.8.5.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'的依赖关系,因为它尚未预加载。使用ReflectionOnly API时,必须通过ReflectionOnlyAssemblyResolve事件按需预加载或加载相关的程序集。

查看ILSpy我可以看到Cirrious.MvvmCross.WindowsPhone.dll引用了这个dll,但我的项目中的程序集引用列表中只提供了版本3.9.5.0。

我已经尝试在app.config中添加程序集重定向,但我认为更多的是运行时解析,然后是构建错误。

解决此问题的最佳方法是什么?

由于

- 编辑 -

我设法通过查找版本为3.8.5.0的System.WindowsInteractive.dll的WP7.1版本来解决此问题。我的项目肯定是针对Windows 8.0手机操作系统。

这可能是MVVMCross的Nuget包装的问题吗?

1 个答案:

答案 0 :(得分:3)

为了回答这个问题,我今天遇到了这个问题......

我全新安装了Windows 8.1和Windows Phone 8 SDK。我的sln会构建但是当MvvmCross在启动时解决了插件时它会因ReflectionLoadTypeException而崩溃 - LoaderExceptions属性包含一个条目 - 它无法找到System.Windows.Interactivity,尽管它是从项目的参考管理器中的扩展列表引用。

解决方案是安装Windows Phone 7 SDK并从C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\Windows Phone\v7.1\Libraries\System.Windows.Interactivity.dll获取Windows Phone 7版本。