2013-05-29 2 views
3

Я использую структуру MvvmCross для создания проекта Windows Phone 8. В моем WP8 проекта в XAML я следующее:Я получаю ошибки сборки при использовании MvxEventToCommand в проекте 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, Ve rsion = 3.8.5.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 ', потому что он не был предварительно загружен. При использовании API ReflectionOnly зависимые сборки должны быть предварительно загружены или загружены по требованию через событие ReflectionOnlyAssemblyResolve.

Глядя на ILSpy, я вижу, что Cirrious.MvvmCross.WindowsPhone.dll ссылается на эту DLL, но у меня только версия 3.9.5.0 доступна в моем списке ссылок на сборку в моем проекте.

Я попытался добавить перенаправление сборки в свой app.config, но я думаю, что это больше для разрешения времени выполнения, а затем для ошибок сборки.

Каков наилучший способ решить эту проблему?

Благодаря

- EDIT -

мне удалось решить эту проблему, найдя вариант WP7.1 в System.WindowsInteractive.dll, которая является версия 3.8.5.0. Мой проект определенно ориентирован на ОС Windows 8.0.

Это может быть проблема с упаковкой Nuget MVVMCross?

+0

Вдали от дома. Не удается ответить правильно. Я знаю, что eventtocommand полагается на интерактивность из blend - но обычно MS sdk устанавливает это ... Попробует проверить больше на следующей неделе. – Stuart

+0

Спасибо. У меня есть работа с этой старой версией, но было бы неплохо использовать обновленную версию. SDK действительно установил System.Windows.Interactive, похоже, версия 3.9.5.0. –

+0

В структуре mvvmcross используются проекты, ориентированные на wp7.1, есть один проект, который является ссылкой на system.windows.interactivity. Если ваш основной проект нацелен на wp8, может быть, есть конфликт где-то ... У меня была эта же проблема, некоторое время назад, но я напрямую использую проекты mvvmcross, поэтому я только что преобразовал проекты WP7.1 в WP8. Это не лучший подход, но для меня это сработало. Возможно, я изменю это в ближайшем будущем. – zleao

ответ

3

Просто, чтобы ответить на этот вопрос, так как я наткнулся на эту проблему сегодня ...

Я имел новую установку Windows, 8.1 и Windows Phone 8 SDK. Мой sln построил бы, но когда MvvmCross разрешил плагины при запуске, он сработал бы с ReflectionLoadTypeException - свойство LoaderExceptions содержало одну запись - ему не удалось найти System.Windows.Interactivity, несмотря на то, что ссылается на список расширений в справочном менеджере для проекта ,

Решением было установить Windows Phone 7 SDK и получить версию Windows Phone 7 от C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\Windows Phone\v7.1\Libraries\System.Windows.Interactivity.dll.

+0

Да, в конце концов я отказался от dll, чтобы заставить его работать. К сожалению, это означало, что я не мог использовать некоторые другие сборки ThirdParty, поскольку они ссылались на более новую версию System.Windows.Interactivity. Как отметил @zleao, это связано с тем, что проекты MVVMCross нацелены на версии этой версии dll WP7.1. –

+1

Пошел по той же проблеме сегодня. Решил его, скопировав MvxEventToCommand.cs в наше решение WP8 и ссылаясь на него (которое затем строит против правильной версии System.Windows.Interactivity), а не из MvvmCross. –

Смежные вопросы