Как узнать, будет ли DLL, созданная в .Net, работать в Silverlight? - PullRequest
1 голос
/ 30 сентября 2010

Как я могу узнать, будет ли DLL-библиотека, созданная для настольного приложения (в .Net), работать в приложении Silverlight? Дополнительный вопрос: поскольку SilverLight для Windows Phone 7 является подмножеством Silverlight, как определить, будет ли DLL работать в приложении, созданном для Windows Phone 7?

примечание: поскольку WP7 не поддерживает P / Invoke - это будет означать, что любая библиотека .Net, использующая P / Invoke, не должна работать для приложения WP7 silverlight. Я хотел бы знать, есть ли какой-нибудь простой способ определить это (без необходимости запуска самого приложения).

Причина этого в том, что мне нужна реализация алгоритма работы с изображениями, и я хотел бы выяснить, будут ли они работать на платформе Windows Phone 7, прежде чем я их куплю.

1 Ответ

3 голосов
/ 30 сентября 2010

Короче говоря, не будет. Две среды CLR совершенно разные, хотя они имеют схожие интерфейсы.

Есть три предостережения:

(1) Если у вас есть исходный код, и этот код не зависит от того, что Silverlight не поддерживает, вы можете попробовать кросс-компилировать его для Silverlight, ссылаясь на исходные файлы в проекте Silverlight. Иногда вы можете заставить его работать с незначительными изменениями исходного кода или разумным использованием #if определений. Иногда ты не можешь.

(2) В Silverlight 4 / .NET 4 иногда можно повторно использовать сборки, скомпилированные для Silverlight, в .NET. У команды CLR есть запись в блоге , объясняющая, как она работает . Однако это довольно ограниченное решение, потому что (a) сборки сначала должны быть скомпилированы для Silverlight, и (b) эти переносимые сборки могут вызывать только небольшой набор других сборок, которые сами являются переносимыми, например Mscorlib, System, System.Core и пр. (Должен отметить, что это не сработает для вас, поскольку вы ориентируетесь на WP7, основанный на Silverlight 3.)

(3) Вы можете время от времени дурачиться с внутренностями DLL и взламывать скомпилированную DLL, полагая, что это DLL Silverlight. В блоге есть сообщение о том, как это сделать здесь . Но опять же, это довольно ограниченное решение, поскольку сборка не может вызывать какие-либо методы или сборки, которые не включены в Silverlight. Это включает в себя некоторые довольно простые вещи, такие как некоторые переопределения для Buffer.BlockCopy (), такого рода вещи. Я был бы удивлен, если бы этот метод работал со сложной коммерческой DLL обработки изображений, но произошли более странные вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...