Sketchables в WPF с.NET 4, не может загрузить System.Core версии =2.0.5.0
Новичок Sketchflow (пара дней), новичок WPF (несколько недель).
Детали рабочего пространства:
WinXP, Visual Studio 2010 Ultimate, Expression Studio Ultimate (используется Expression Blend 4 с SketchFlow). Загрузил выпуск Sketchables 0.9 и собрал выпускную версию (отладочная версия уже создана).
Детали вопроса:
Запустите Expression Blend 4, создайте проект WPF Sketchflow. Постройте это (успешно). Добавьте ссылки на версию выпуска или отладочную версию библиотеки Sketchables (на рабочем столе, а не в папке SL) и попробуйте выполнить сборку заново. Сборка завершается с ошибкой:
Unknown build error, 'Could not load file or assembly 'System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToken=XXXXXXXXXXXX' or ore of its dependencies. The local assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)'
Теперь я видел некоторые проблемы с похожей ошибкой, в частности пару проблем, когда проблема была вызвана попыткой загрузить элемент управления Silverlight в проект WPF. Тем не менее, я не достаточно осведомлен, чтобы знать, связано ли это. Надеюсь, я попробовал проект Silverlight. Конечно же, создание проекта Silverlight Sketchflow и добавление библиотек Sketchables выполняется аккуратно.
Итак, вопрос в следующем: есть ли у кого-нибудь идеи о том, что на самом деле вызывает эту ошибку в источнике Sketchables, о том, как ее отследить, чтобы я мог поработать над ней и получить чистую библиотечную сборку для WPF?
2 ответа
Вы определили причину проблемы, сборка, на которую вы пытаетесь ссылаться в своем проекте WPF, была скомпилирована для Silverlight (номер версии 2.0.5.0 - это дешевая распродажа, это Siverlight).
Возможно, вы захотите узнать у автора элементов управления, есть ли способ скомпилировать его для WPF.
Чак прав. Dll Sketchables.Common - это библиотека классов Silverlight. Простой способ исправить это создать проект Sketchables.Common.WPF и сделать его обычной библиотекой классов. Скопируйте классы из проекта библиотеки SL, скомпилируйте и измените ссылку в Sketchables.WPF, указав Sketchables.Common.WPF вместо Sketchables.Common. Ваш проект Blend теперь должен быть собран.
Более продвинутым способом является совместное использование обоих общих проектов в одних и тех же файлах, но я не буду вдаваться в подробности. Ищите файлы для обмена (ссылки) между проектами, и вы найдете ответы на эти вопросы.