Как скомпилировать библиотеку на .NET Framework и .NET Compact Framework? - PullRequest
7 голосов
/ 27 декабря 2010

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

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

Спасибо.

Ответы [ 3 ]

4 голосов
/ 27 декабря 2010

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

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

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

2 голосов
/ 31 декабря 2010

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

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

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

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

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

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

1 голос
/ 27 декабря 2010

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

Вы можете собрать 2 версии одной и той же библиотеки для общего .NET и для CF.

Как:

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