3

我正在使用 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 中添加程序集重定向,但我认为这更多的是用于运行时解析,而不是构建错误。

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

谢谢

- 编辑 -

我设法通过找到 System.WindowsInteractive.dll 的 WP7.1 版本(版本 3.8.5.0)解决了这个问题。我的项目绝对是针对 Windows 8.0 手机操作系统的。

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

4

1 回答 1

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.

于 2013-12-08T17:27:23.497 回答