Как скомпилировать библиотеку 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