Хорошо, хороший вопрос.
В этой области много заблуждений, и важно отделять факты от вымысла.
Художественная литература: Сборки Silverlight скомпилированы волшебными гномами Microsoft, что делает их несовместимыми с CLR для настольных компьютеров .Net.
Факт: CLR имеет эту прекрасно сформулированную систему под названием " Fusion ".
Каждая сборка имеет манифест сборки, встроенный как часть DLL / EXE.
Манифест сборки содержит несколько компонентов (имена встроенных ресурсов, информацию о системе типов и т. Д.), А также какие другие сборки требуются для этой сборки.
Fusion является частью CLR, ответственной за получение этой зависимости Сборочный манифест и поиск соответствующего физического файла.
Fusion для сборок Silverlight на рабочем столе .Net CLR - просто работает. (при условии наличия всех зависимостей)
Fusion на Silverlight CLR для настольных сборок - не будет работать.
Главным образом потому, что .Net BCL (библиотеки базовых классов) просто не существует. Как уже упоминалось, это разные mscorlib.dll, agcorlib.dll, System.dll, System.Windows.dll и т. Д.
Причина, по которой эти библиотеки отличаются, заключается в в основном безопасности. Обычный BCL делает все виды неприятных вещей с указателями, специфичными для платформы р / вызовами, файлами, реестром и чем-то еще. И мы не можем просто запустить браузер.
Итак, подведем итог:
Silverlight Asemblies -> Запуск на рабочем столе CLR == Работает
Сборки рабочего стола -> Запуск на Silverlight CLR == Не работает
Если вам нужен реальный пример сборок Silverlight, работающих на настольном компьютере, посмотрите мою статью год назад @ DLL-библиотеки SILVERLIGHT на настольном компьютере