Обнаружение версии Silverlight, необходимой для сборки

Как определить, достаточно ли Silverlight 2 для сборки или требуется Silverlight 3?
У меня есть вся информация, доступная через отражение (Mono.Cecil).

Тот же вопрос для SL 3 против 4.

Заранее спасибо.


person Andrey Shchekin    schedule 07.12.2009    source источник


Ответы (2)


Вы не можете сказать это только по библиотеке классов и ее метаданным — это можно надежно определить только из встроенного файла манифеста приложения Silverlight в .Xap.

person Jeff Wilcox    schedule 09.12.2009
comment
То есть, если новые функции Silverlight 3 не используются, на сборку SL3 можно ссылаться и использовать приложения SL2? Это то же самое для сборок SL4? - person Andrey Shchekin; 09.12.2009

Возможно, это именно то, что вы ищете:

Assembly asm = Assembly.GetExecutingAssembly(); 
string[] parts = asm.FullName.Split(',');
string version = parts[1];

http://forums.silverlight.net/forums/p/23321/82774.aspx#82774

4 обратно совместим с 3, 3 обратно совместим с 2.

Вы должны знать, в какую версию Silverlight встроено приложение.

Установка и обнаружение:

В нем есть файл Javascript, который определяет, установлен ли SL и какую версию: http://blog.mdk-photo.com/post/Detecting-Silverlight-version-installed.aspx

http://www.apijunkie.com/APIJunkie/blog/post/2009/04/How-to-programmatically-detect-Silverlight-version.aspx

Определение версии с помощью Silverlight

http://www.scribd.com/doc/14938624/Creating-a-Custom-Silverlight-Installation-Experience

http://blogs.msdn.com/tims/archive/2007/10/29/optimizing-the-silverlight-install-experience.aspx

GAC также уведомит вас во время компиляции, если вы используете неправильную версию SL. Обычно, когда у вас установлены инструменты Silverlight и вы пытаетесь скомпилировать приложение. Например, ваша сборка создана в версии 3, и вы используете элемент управления, который доступен только в версии 3, вам нужно будет установить инструменты SL 3, иначе сборка сообщит вам об ошибке.

Подробнее о сборках Silverlight:

http://www.netfxharmonics.com/2008/12/Reusing-NET-Assemblies-in-Silverlight

http://nerddawg.members.winisp.net/AssemblySniffer/

person James Campbell    schedule 08.02.2010
comment
Я не думаю, что эти ссылки отвечают на вопрос, потому что первая касается среды выполнения SL в целом, а вторая не помогает с версией. Обратная совместимость по определению означает, что SL4 разрешает библиотеки SL3, но разрешает ли SL3 библиотеки SL4? - person Andrey Shchekin; 08.02.2010
comment
они только обратно совместимы. 3 не поддерживает четыре, а два не поддерживает три. В случае, если требуется более новая версия, вы можете определить версию и принудительно установить ее. - person James Campbell; 08.02.2010
comment
Но как определить версию только на основе сборки? Я не хочу устанавливать SL, так как это вопрос анализа сборки. SL может вообще не быть установлен. - person Andrey Shchekin; 08.02.2010
comment
Я обновлю свой ответ тем, как работает процесс установки и обнаружения. Также обратите внимание, что большинство пользователей автоматически уведомляются о выпуске новой версии и получают уведомление об установке обновления, у большинства пользователей Silverlight установлена ​​версия 3.0. - person James Campbell; 08.02.2010
comment
Первая ссылка имеет файл js, который может определить, установлен ли sl и какая версия. - person James Campbell; 08.02.2010
comment
Я добавил код для проверки версии непосредственно на уровне сборки. - person James Campbell; 08.02.2010
comment
При этом проверяется версия сборки, заданная атрибутом [assembly: AssemblyVersion], а не требуемая версия среды выполнения Silverlight. Я не могу использовать JS, потому что я, по сути, делаю инструмент для анализа сборки, который работает на сервере, а не на клиенте. И AssemblySniffer показывает только да/нет Silverlight вместо конкретной версии. - person Andrey Shchekin; 09.02.2010