Как скомпилировать библиотеку on.NET фреймворк и .NET Compact Framework?


Я разрабатываю класс технической библиотеки, который может использоваться на обоих типах фреймворков (компактных или нет).

Как лучше всего разработать такую библиотеку? Использование по умолчанию функций .NET (для XP Embedded) и ограничений do при использовании Windows CE (использование CF.NET)?

Спасибо.

3 7

3 ответа:

Обычно я подхожу к этому, имея отдельные библиотеки DLL для каждой игровой формы, поэтому я могу использовать доступные функции платформы, когда это возможно (часто ни то, ни другое не является строгим подмножеством/суперсетью, и стремление к пересечению чрезмерно ограничивает, если вы хотите производительность бит и т. д.).

Большинство функций являются общими, поэтому количество кода #if (с характерными символами сборки) часто минимально.

Чтобы избежать проблем с забыванием добавить файлы проекта, я использую рекурсивный подстановочный знак в csproj, так что все .cs-файлы включаются автоматически.

Я нахожу, что существует два подхода к совместному использованию библиотечных классов между базами кода .NET и .NET CF.

Код идентичен

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

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

Код очень похож, но отличается

В этом случае я создаю два проекта и, следовательно, две сборки. Одну из этих сборок я делаю основной и включаю в нее все используемые файлы. Во втором я добавляю файлы в виде ссылок, чтобы включить их в качестве ссылок, поэтому любые обновления отражаются. Затем я использую ifdefs для любых особых случаев, когда они могут отличаться.

Рассмотрите возможность использования директив препроцессора.

Вы можете построить 2 версии одного и того же lib для general .NET и для CF.

Как:

#if (!COMPACT_FRAMEWORK)
            // some code only for general .NET 
#endif