我正在使用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"的依赖。交互性,版本=3.8.5.0,文化=中性,PublicKeyToken=31bf3856ad364e35',因为它没有预加载。当使用ReflectionOnly api时,依赖程序集必须通过ReflectionOnlyAssemblyResolve事件预加载或按需加载。
在ILSpy中,我可以看到Cirrious.MvvmCross.WindowsPhone.dll引用了这个dll,但我在我的项目中的汇编引用列表中只有3.9.5.0版本可用。
我试过在我的app.config中添加一个程序集重定向,但我认为这更适合运行时解决方案,然后用于构建错误。
解决这个问题的最好方法是什么?
感谢—EDIT—
我已经设法通过找到System.WindowsInteractive.dll的WP7.1版本来解决这个问题,该版本为3.8.5.0。我的项目肯定是针对Windows 8.0手机操作系统的。
这可能是MVVMCross的Nuget包装的问题吗?
为了回答这个问题,因为我今天遇到了这个问题…
我刚刚安装了Windows 8.1和Windows Phone 8 SDK。我的sln将构建,但是当MvvmCross解决启动时的插件时,它将与ReflectionLoadTypeException
崩溃- LoaderExceptions
属性包含单个条目-它无法找到System.Windows.Interactivity
,尽管从项目参考管理器中的扩展列表中引用。
解决方案是安装Windows Phone 7 SDK并从C:Program Files (x86)Microsoft SDKsExpressionBlendWindows Phonev7.1LibrariesSystem.Windows.Interactivity.dll
获取Windows Phone 7版本。