2011-01-06 3 views
12

У меня есть решение, содержащее как Silverlight 4, так и решение WPF 4. Одна из них - веб-версия приложения, а другая - настольная версия.Лучший способ обмена кодом между WPF и Silverlight

Оба проекта имеют одинаковые классы и интерфейсы домена и оба доступа к облаку для хранения и другие вещи.

Я хотел создать общий проект «Интерфейсы и классы», поэтому я создал библиотеку классов, но разве вы не знаете, что Silverlight не может добавить ссылку на библиотеку классов. Таким образом, я создал общий проект в качестве библиотеки Silverlight класса, но когда я ссылаться, что из проекта WPF я получаю предупреждение:

Warning The project 'Interface.Common.Silverlight' cannot be referenced. The referenced project is targeted to a different framework family (Silverlight)

и я даже получаю ошибки во время выполнения загрузки класса, когда я использую любой класс из этой библиотеки потому что «System.Windows не может быть найден во время выполнения»

Я хочу поделиться кодами между двумя проектами, как это можно достичь чистым способом?

Спасибо за любую помощь вы можете дать

+1

MSDN - Обмен кода между Silverlight и WPF: http://msdn.microsoft.com/en-us/library/ff921109(v=pandp.40).aspx –

+0

спасибо , Я делаю это сейчас, но все еще есть много вопросов ... например, можете ли вы использовать код доступа Azure между SL и WPF? – Mark

+2

Внимание искателей! Проверьте [Portable Class Libraries] (http://msdn.microsoft.com/en-us/library/gg597391.aspx), теперь поддерживаемый в .NET 4.0! – Will

ответ

7

Создание двух параллельных проектов один для WPF и один для Silverligth. Для одного из проектов добавьте файлы в виде ссылок вместо файлов.

Я сделал это Устпешно для Microsoft Silverlight Analytics Framework с одной кодовой базы для Silverlight 4, WPF и Windows Phone 7.

+0

так создайте два проекта Common.Interface (Common.Interface.SL и Common.Interface.WPF) и файлы в одном из них (который один?) Будут ссылками вместо реальных файлов? Что это значит? – Mark

+0

В проекте -> Добавить существующий пункт, выберите стрелку вниз рядом с кнопкой Добавить. Загрузите MvvmLight Toolkit для примера совместного использования кода между проектами Sliverlight и WPF с использованием связанных файлов C#: http://mvvmlight.codeplex.com/ –

+0

Да, именно это я вижу, как большинство людей делают. Неважно, какой проект имеет файлы, а у которого есть «связанные элементы». Тогда, если у вас есть код, который должен быть только одной платформой, он может быть только в одном проекте, и если класс должен быть немного другим, вы можете делать такие вещи, как #ifdef SILVERLIGHT, или иметь частичный класс с методом/свойством/и т.п. определенными по-разному в проекте каждой платформы в другом частичном классе того же класса. –

0

насчет XAML кода обмена с Silverlight и WPF

0

Создать "Portable" проект , которые можно ссылаться как из WPF и Silverlight

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