在Silverlight2中,如果使用附属(additional)程序集(比如System.Xml.Linq.dll)
时,需要在VS中添加对它的引用。最终在生成的XAP文件中包括下面内容:
时,需要在VS中添加对它的引用。最终在生成的XAP文件中包括下面内容:
1.当前应用的assembly 文件
2.当前应用的manifest 文件
3.一个System.Xml.Linq.dll拷贝
2.当前应用的manifest 文件
3.一个System.Xml.Linq.dll拷贝
这样,每当用户下载该应用时,他们也会下载System.Xml.Linq.dll文件。如果想下载其它silverlight应用(也使用了System.Xml.Linq.dll)的话,这些应用是不能从中获益(共享)的。事实上,我的应用程序中就已经造成了这个问题。
注:System.Xml.Linq.dll只是一个例子, 还有不少的assemblies被大量用于silver
light应用中。
light应用中。
在silverlight3中,可以通过Microsoft 来下载一些assemblies文件,好处就是:
1.减少你的XAP文件尺寸
2.对于其它XAP中已(有)下载的assembly文件,在你的应用中可不必再次下载。
2.对于其它XAP中已(有)下载的assembly文件,在你的应用中可不必再次下载。
如你的安装路径与我相同:
c:\program files\microsoft sdks\silverlight\v3.0\libraries\client
并搜索*.xml文件的话,就会发现一些叫“.extmap.xml”的文件。举个例子:
"System.Xml.Linq.extmap.xml "
<?
xml version="1.0"
?>
< manifest xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd ="http://www.w3.org/2001/XMLSchema" >
< assembly >
< name > System.Xml.Linq </ name >
< version > 2.0.5.0 </ version >
< publickeytoken > 31bf3856ad364e35 </ publickeytoken >
< relpath > System.Xml.Linq.dll </ relpath >
< extension downloadUri ="http://go.microsoft.com/fwlink/?LinkId=142576" />
</ assembly >
</ manifest >
< manifest xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd ="http://www.w3.org/2001/XMLSchema" >
< assembly >
< name > System.Xml.Linq </ name >
< version > 2.0.5.0 </ version >
< publickeytoken > 31bf3856ad364e35 </ publickeytoken >
< relpath > System.Xml.Linq.dll </ relpath >
< extension downloadUri ="http://go.microsoft.com/fwlink/?LinkId=142576" />
</ assembly >
</ manifest >
这个文件所做的就是提供一个“Microsoft链接”,即从哪可下载到“System.Xml.Linq.dll”,而你可以不用在XAP中提供该(xml)文件。
如果你安装Silverlight3 Beta tools之后,就会在VS中的项目属性页中看到一个新添的选项,如下:
![](http://mtaulty.com/blog/images/AquicklookatSilverlight3TransparentPlatf_D481/image_thumb.png)
当选中该项之后,你就会看到生成的程序manifest中有一些变化。比如,引用System.Xml.Linq.dll:
<
Deployment
xmlns
="http://schemas.microsoft.com/client/2007/deployment"
xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
EntryPointAssembly
="SilverlightApplication18"
EntryPointType
="SilverlightApplication18.App"
RuntimeVersion
="3.0.40307.0"
>
< Deployment.Parts >
< AssemblyPart x:Name ="SilverlightApplication18" Source ="SilverlightApplication18.dll" />
< AssemblyPart x:Name ="System.Xml.Linq" Source ="System.Xml.Linq.dll" />
</ Deployment.Parts >
</ Deployment >
< Deployment.Parts >
< AssemblyPart x:Name ="SilverlightApplication18" Source ="SilverlightApplication18.dll" />
< AssemblyPart x:Name ="System.Xml.Linq" Source ="System.Xml.Linq.dll" />
</ Deployment.Parts >
</ Deployment >
而选中该选项后:
<
Deployment
xmlns
="http://schemas.microsoft.com/client/2007/deployment"
xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
EntryPointAssembly
="SilverlightApplication18"
EntryPointType
="SilverlightApplication18.App"
RuntimeVersion
="3.0.40307.0"
>
< Deployment.Parts >
< AssemblyPart x:Name ="SilverlightApplication18" Source ="SilverlightApplication18.dll" />
</ Deployment.Parts >
< Deployment.ExternalParts >
< ExtensionPart Source ="http://go.microsoft.com/fwlink/?LinkId=142576" />
</ Deployment.ExternalParts >
</ Deployment >
< Deployment.Parts >
< AssemblyPart x:Name ="SilverlightApplication18" Source ="SilverlightApplication18.dll" />
</ Deployment.Parts >
< Deployment.ExternalParts >
< ExtensionPart Source ="http://go.microsoft.com/fwlink/?LinkId=142576" />
</ Deployment.ExternalParts >
</ Deployment >
当在浏览器中运行该应用时,会看到(使用fiddler工具)下面的流量(请求)就会从我的程序中发
送到Microsoft.com:
送到Microsoft.com:
![](http://mtaulty.com/blog/images/AquicklookatSilverlight3TransparentPlatf_D481/image_thumb_3.png)
以便获取 System.Xml.Linq.dll的压缩文件。
本文转自 daizhenjun 51CTO博客,原文链接:http://blog.51cto.com/daizhj/149059,如需转载请自行联系原作者