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

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

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

спасибо.

3 ответов


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

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

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


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

код идентичен

часто библиотеки могут быть идентичными, особенно если это базовые библиотеки с вычислениями или идентичные бизнес-классы. Для неинтерфейсных библиотеки это часто бывает так .Сетка БФ в основном подмножество .Нет.

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

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

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


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

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

Как :

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