Как мобильный проект должен ссылаться / использовать классы в полной среде .net? - PullRequest
0 голосов
/ 30 ноября 2009

Наша команда разрабатывает фреймворк. В другом решении у нас есть мобильный проект (наряду с другими «обычными» проектами .NET). Этот мобильный проект выиграет от использования некоторого кода в фреймворке. Тем не менее, фреймворк является полной версией .NET, а не компактной. Как мобильный проект должен использовать этот базовый код? Прямо сейчас наша команда добавила много файлов в рамках в мобильный проект через связанные файлы. Мы можем сделать это, но мне интересно, есть ли лучший способ. При таком подходе мы должны предпринять некоторые дополнительные шаги на сборочной машине, чтобы эти связанные файлы были доступны, когда мы собираем решение с мобильным приложением.

Другим вариантом является поддержка двух версий классов инфраструктуры; один как полная версия .net, а другой как версия с компактным фреймворком. Но поддержание дублированного кода никогда не бывает хорошим.

Ответы [ 3 ]

0 голосов
/ 30 ноября 2009

Мы занимаемся разработкой .NET Full и CF. Мы делаем более или менее то, что вы делаете, с небольшим изменением. Обычно проекту требуется два решения: одно для настольного приложения (Full .NET) и одно для мобильного приложения (CF .NET).

Иногда нам нужно разделить код между двумя приложениями. Мы создаем отдельную библиотеку классов для этого кода и библиотеку второго класса, которая заканчивается на «Compact» и содержит «связанные» файлы из полной библиотеки классов .NET. Например:

My.Desktop

My.Mobile

My.Common

My.Common.Compact

My.Common.dll ссылается на My.Desktop, а My.Common.Compact.dll - на My.Mobile.

Еще один совет. Иногда код в My.Common не работает точно так же, как в My.Common.Compact, потому что в CF отсутствует много кода, который существует в Full .NET. Чтобы преодолеть это, мы используем операторы #if с директивой FULL_FRAMEWORK, которая определена только в My.Common, и мы уверены, что она не определена в My.Common.Compact.

0 голосов
/ 30 ноября 2009

Кто-то действительно прислал мне ссылку MSDN именно на эту тему. Суть в том, что два проекта (полный каркас и CF) используют одну и ту же папку, а затем одни и те же файлы (но каждый проект может выбирать, какие файлы они хотят).

http://msdn.microsoft.com/en-us/magazine/cc163387.aspx

0 голосов
/ 30 ноября 2009

поддержка двух версий классов станет кошмаром для менеджмента. Вы можете ссылаться на полные сборки .NET-версии из проекта .NET CF, но нет способа гарантировать, что все необходимые методы и сборки будут доступны на мобильном устройстве.

Вы должны создать общий проект, нацеленный на платформу .NET CF, и поместить в него все классы, необходимые для обоих проектов / продуктов, а затем сослаться на этот общий проект в своем мобильном проекте и другом проекте, который использует полную версию .NET Framework.

...