Silverlight 3.0 不再包含 asp:silverlight 控件

从 Silverlight 2 升级到 Silverlight 3 可能会报如下错误,程序中可能引用了 asp:silverlight 控件:

Could not load file or assembly 'System.Web.Silverlight' or one of its dependencies. The system cannot find the file specified.

未能加载文件或程序集“System.Web.Silverlight”或它的某一个依赖项

原因是 Silverlight 3 SDK 已经移除了 asp:silverlight 和 asp:mediaplayer,这两个控件包含在 System.Web.Silverlight.dll 这个 dll 中。

对于升级程序

最简单的方法是:安装 System.Web.Silverlight.dll  这个程序集。

一 是,可以同时安装 Silverlight 2 SDK,Silverlight 2 SDK 安装包中包含了这个 dll,位于 C:\Program Files\Microsoft SDKs\Silverlight\v2.0\Libraries\Server 中,Silverlight 2 与Silverlight 3 可以并行运行(side-by-side)。

二是,也可以直接从 http://code.msdn.microsoft.com/aspnetprojects  获取这个 dll 与源码。

关于新程序

微软建议使用 html 标准标签 object (以及Silverlight.js)替代 asp:silverlight,简单如下

<object type="application/x-silverlight-2"  
data="data:application/x-silverlight,"
width="450" height="220">
<param name="source" value="MySilverlightApplication.xap"/>
</object>
注意,FireFox 对于 data 属性,需要包含一个额外的 , (逗号)结尾。
其他完整的属性以及参数可以参考 MSDN Silverlight 插件对象参考 
此外,下载文档 ASP.NET Server Controls for Silverlight in the Silverlight 3 SDK 详细介绍了如何在 Silverlight 3 中用 object 来初始化 silverlight 应用程序。
示例(见Silverlight 3 object tag param list (aka Where is my asp:Silverlight control?))
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="ClientBin/MyApplication.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="3.0.40624.0" />
<param name="autoUpgrade" value="true" />
<param name="enableRedrawRegions" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;0px;border:0px"></iframe>
注意上面的代码中 iframe 是为了跨浏览器兼容性。iframe 防止 Safari 缓存该页。当用户退回访问过的页面,Safari 缓存会阻止 Silverlight 插件重新加载。iframe 必须紧接着 </object>。
 
参考
Silverlight 3 object tag param list (aka Where is my asp:Silverlight control?)
ASP.NET Controls in Silverlight 3
http://silverlight.net/learn/whitepapers/
原文地址:https://www.cnblogs.com/goody9807/p/1673304.html