作者: zyl910
一、问题
今天需要调试一个SilverLight程序。运行时ie弹出了一个升级提示,于是手贱点了升级。
随后便悲剧了,VS调试时报“无法启动调试--未安装 Silverlight Developer 运行时。请安装一个匹配版本”。
打开控制面板里的“卸载或更改程序”,发现版本号确实不同——
- Silverlight: 5.1.50907.0
- Silverlight 5 SDK - CHS: 5.0.61118.0
但奇怪的是,没看到“Silverlight Developer”,只看到“Silverlight”。
二、疑难
查了一下,说是需要安装匹配的Silverlight Developer。
故搜索Silverlight Developer。发现没有“Silverlight Developer”,但找到了Silverlight官方的 Silverlight Downloads 页面。以为只是文字别名的小问题,应该下载官方的最新开发包就行了。
但发现该页面下载的“Silverlight 5 Toolkit”、“Silverlight 5 SDK”,安装后均不能解决问题。
仔细一看,发现“Silverlight 5 Toolkit”、“Silverlight 5 SDK”均是 5.0.61118.0,与之前的相同,没有5.1.50907.0版。
于是又换了多种搜索引擎,尝试加上“5.1.50907.0”等关键词。但仍是查到刚才的那些页面,或者是其他网站转载的,均不顶用。看来是没有“Silverlight 5 SDK 5.1.50907.0”的。
三、解决
既然上述办法均无效,我想那就干脆卸载Silverlight再重装吧。
将Silverlight卸载后,尝试打开了一次VS。VS弹出对话框说Silverlight没安装,并提供一个下载链接
将它下载安装后,发现它正好是我们所需要的最新版(5.1.50907.0)的Silverlight Developer。VS能成功调试Silverlight程序了。
打开控制面板“卸载或更改程序”的版本号还是跟以前一样——
- Silverlight: 5.1.50907.0
- Silverlight 5 SDK - CHS: 5.0.61118.0
四、分析
根据此次经历,可得知——
- Silverlight插件有2个运行时,分别是“Silverlight”与“Silverlight Developer”。但它们在控制面板“卸载或更改程序”里显示的是同一个程序(Silverlight),导致我们不好判断是不是Developer版。
- Silverlight 的版本号与“Silverlight SDK”不同。因为缺陷修复等原因,Silverlight的版本有时比“Silverlight SDK”新的多。但只要主版本号相同,便能使用(例如“Silverlight SDK 5.0.61118.0”开发的应用可以在“Silverlight 5.1.50907.0”上运行)。
- 若要调试Silverlight应用,除了需要“Silverlight SDK”进行编译外,还需要“Silverlight Developer”运行时。而在“Silverlight”运行时下是不能调试的。
这次问题的发生原因是——
- 在浏览器中升级Silverlight,实际上更新为“Silverlight”运行时(非Developer)。“Silverlight Developer”因版本较低而被覆盖了。
- 当VS检查到只有Silverlight没有“Silverlight Developer”运行时时,会弹出错误对话框。但它没有提供下载链接,导致我们得自己去找。
- 官网的“Get Silverlight”提供了最新版的Silverlight运行时(非Developer),但找不到“Silverlight Developer”的下载地址。
- 官网的“Silverlight Downloads”提供了“Silverlight 5 Toolkit”、“Silverlight 5 SDK”。但它们中集成的“Silverlight Developer”是旧的。
参考文献
- 官网《Get Silverlight》: https://www.microsoft.com/getsilverlight/Get-Started/Install/Default
- 官网《Silverlight Downloads》: https://msdn.microsoft.com/en-us/library/mt788663.aspx
- RitchieChen《SilverLight:”无法启动调试--未安装 Silverlight Developer 运行时。请安装一个匹配版本”的解决方案。》: https://www.cnblogs.com/RitchieChen/archive/2012/02/08/2342125.html