Bud*_*dda 2 .net silverlight xap silverlight-4.0
有必要将"标准"程序集移出xap文件(Silverlight 4应用程序).我有一个类似的问题(Silverlight:如何处理标准程序集)并得到了很好的链接与深刻的解释.但并非一切都很清楚.
在我通过使用应用程序库缓存打开"减少XAP大小"之后,我的xap文件的大小减少了两倍,以下程序集被移出到单独的zip文件中:
但仍然很少有其他人似乎很适合转移到单独的文件中:
所有这些程序集都是从Silverlight应用程序(以及使用这些程序集的Silverlight项目)引用的.
你能解释一下:
非常感谢你!
PS可能我的问题的答案在文中:
在Silverlight SDK中添加对库程序集的引用,或者添加对有效assemblyShortName.extmap.xml映射文件的任何程序集的引用.
但我不明白这是什么意思.如果我正确理解,我需要将这些程序集(我想要移出)的引用添加到Silverlight SDK中.但是怎么做呢?谢谢.
A1)两个列表之间的区别在于第一组程序集已经定义了必要的*.extmap.xml文件,Visual Studio使用这些文件自动将每个程序集打包到一个zip文件中,然后在该文件中独立缓存.客户端(通过Web浏览器).
如果您查看此文件夹(根据需要调整安装驱动器位置):
C:\ Program Files(x86)\ Microsoft SDKs\Silverlight\v4.0\Libraries\Client
你会看到几乎每个常见的Silverlight程序集都有*.extmap.dll文件(如果不是全部的话).例如,这是System.Windows.Data.extmap.dll的内容:
<?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.Windows.Data</name>
<version>2.0.5.0</version>
<publickeytoken>31bf3856ad364e35</publickeytoken>
<relpath>System.Windows.Data.dll</relpath>
<extension downloadUri="System.Windows.Data.zip" />
</assembly>
</manifest>
Run Code Online (Sandbox Code Playgroud)
如果您按照此处的文档,您将看到它是如何构建的.大多数部分应该是显而易见的,唯一不寻常的方面可能是扩展元素.通过在downloadUri属性中放置一个文件名,程序集会自动打包到该文件中(它是一个zip文件,但扩展名可以是你想要的任何东西).
当您引用诸如System.Windows.Data之类的程序集时,它会发现此文件并在构建期间使用它来创建zip文件System.Windows.Data.zip.如果两个或多个引用的程序集共享相同的downloadUri目标文件名,则它们将在构建时自动合并为单个文件.
A2)您可以遵循该模式并为第二个列表中的每个程序集创建*.extmap.dll文件.
xml文件应与您创建的程序集位于同一文件夹中.
对于GalaSoft.MvvmLight.SL4,(例如,我没有安装此组件,也不知道它是否已签名).该文件将命名为:
GalaSoft.MvvmLight.SL4.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>GalaSoft.MvvmLight.SL4</name>
<version>#.#.#.#</version> <!-- needs the version number -->
<!-- if there's a public key token, put it in this element, and
uncomment it -->
<!-- <publickeytoken></publickeytoken> -->
<relpath>GalaSoft.MvvmLight.SL4.dll</relpath>
<extension downloadUri="GalaSoft.MvvmLight.SL4.zip" />
</assembly>
</manifest>
Run Code Online (Sandbox Code Playgroud)
该文件存在后,Visual Studio将使用它来构建名为GalaSoft.MvvmLight.SL4.zip的zip文件.一旦引用dll,这一切都会自动发生(只要extmap.xll文件与原始程序集并排).
| 归档时间: |
|
| 查看次数: |
573 次 |
| 最近记录: |