获取当前客户端Silverlight版本?

时间:2010-05-04 15:55:32

标签: c# silverlight-3.0

我想知道是否有一种方法可以使用 C#来打开用户正在运行的当前Silverlight版本正在开发我正在开发的应用的客户端

用于记录目的。

我想知道他们是否在浏览器上使用 Silverlight 3或4

3 个答案:

答案 0 :(得分:2)

var dotNetRuntimeVersion = Deployment.Current.RuntimeVersion;
var silverlightVersion = Environment.Version.ToString();

支持:5,4,3

答案 1 :(得分:0)

仅使用C#我不知道,但您可以做的是使用javascript检测它,然后将ajax请求发送到一个让服务器知道版本的函数。

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

上面的脚本需要进行一些修改才能使用4.0,但它应该很容易。

答案 2 :(得分:0)

Environment.Version可能与插件版本不同。当我使用 Silverlight 4 时,我设法找到了与插件版本不同的版本,似乎没有规律性。

有从JS获取Silverlight插件版本的方法,有办法将JS添加到页面并从Silverlight调用它。所以使用此处的代码:http://www.visiblox.com/blog/posts/2010/04/29/determining-silverlight-version-installed/我设法这样做:

var pScriptElement = HtmlPage.Document.CreateElement("script");
pScriptElement.SetAttribute("type", "text/javascript");
pScriptElement.SetProperty("text", "function GetSilverlightVersion(){var parts = Array(\"ver-major\", \"ver-minor\", \"ver-build\", \"ver-revision\");var nav = navigator.plugins[\"Silverlight Plug-In\"];var versionStr = \"\";if (nav) {versionStr = nav.description;} else {if(SilverlightIsInstalledOnIE)versionStr = GetSilverlightVersionOnIE();else versionStr = -1;}return versionStr;}function SilverlightIsInstalledOnIE(version){if(version == null)version = \"1.0\";var AgControl = new ActiveXObject(\"AgControl.AgControl\");    if(AgControl == null)return false;elsereturn AgControl.isVersionSupported(version);}function GetSilverlightVersionOnIE(){var currVersion = Array(1,0,0,0);for(var i=0;i<currVersion.length;i++){currVersion[i] = FindSupportedMaxVersionOnIE(currVersion, i,0,10000000);}return GetVersionString(currVersion);}function GetVersionString(versionArr,currVersion,index){if(index == null)index = -1;var versionStr = \"\";for(var i=0;i<versionArr.length;i++){if(i>0)versionStr += \".\";if(i==index)versionStr +=currVersion;elseversionStr += versionArr[i];}return versionStr;}function FindSupportedMaxVersionOnIE(versionArr, index,bottom,top){if(bottom >= top){return bottom;}var currVersion = bottom;var prevVersion = currVersion;var step = 1;while(currVersion<top){if(SilverlightIsInstalledOnIE(GetVersionString(versionArr,currVersion,index))){prevVersion = currVersion;currVersion += step;step *= 2;}elsereturn FindSupportedMaxVersionOnIE(versionArr, index,prevVersion,currVersion-1)}if(SilverlightIsInstalledOnIE(GetVersionString(versionArr,top,index)))return top;elsereturn FindSupportedMaxVersionOnIE(versionArr, index,prevVersion,top-1)}");
HtmlPage.Document.Body.AppendChild(pScriptElement);

var slVer = HtmlPage.Window.Invoke("GetSilverlightVersion", null);

这样我就可以在IE和其他浏览器上获得可靠的插件版本。我已经创建了自己的类来解析和比较版本,因此我可以轻松检查用户是否在修复之前使用了插件或者已知故障。