2012-02-01 6 views
1

У меня есть библиотека классов, которую я использую .Net Framework и Silverlight, используя два связанных проекта и технологию связанных файлов.У портативных классов библиотеки обрабатываются условные утверждения/ссылки?

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

#if SILVERLIGHT 
... 
#else 
... 
#endif 

Будет ли это выполнено в PCL?

Кроме того, часть кода, которая не является silverlight, ссылается на стороннюю обычную библиотеку классов .Net. PCL все еще компилируется, но я не могу использовать его в Silverlight из-за этой ссылки. Есть ли способ сказать PCL включить его только для использования .Net?

ответ

1

Этот шаблон реализует переносимость во время компиляции вместо переносимости во время выполнения.

Если у вас есть тонны кода, специфичного для Silverlight, то на самом деле у вас нет портативной библиотеки - вам следует рассмотреть возможность разложения кода, соответствующего Silverlight, на отдельную сборку, и эта специализированная сборка зависит от вашего PCL.

Если у вас очень мало кода Silverlight, вы можете использовать привязку к своим зависимостям Silverlight динамически во время выполнения с использованием отражения. Затем ваш PCL можно использовать в любом контексте, но «изящно обновится» до Silverlight, если присутствует Silverlight.

+0

Спасибо. Я не думал об этом. –