我正在使用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包装的问题吗?
答案 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版本。