gpt4 book ai didi

.net - Silverlight:如何处理标准程序集(第 2 部分)

转载 作者:行者123 更新时间:2023-12-02 07:13:29 25 4
gpt4 key购买 nike

有必要将“标准”程序集移出 xap 文件(Silverlight 4 应用程序)。我有一个类似的问题 ( Silverlight: how to handle standard assemblies ) 并且得到了很好的链接和深入的解释。但并非一切都清楚。

在我打开“使用应用程序库缓存减少 XAP 大小”后,我的 xap 文件的大小减少了两倍,以下程序集被移出到单独的 zip 文件中:

  • System.ComponentModel.DataAnnotations;
  • 系统.Windows.Controls,
  • 系统.Windows.Controls.Data,
  • System.Windows.Controls.Data.Input,
  • System.Windows.Controls.Input,
  • System.Windows.Controls.Navigation,
  • System.Windows.Controls.Toolkit;
  • System.Windows.Data.

但仍然有一些其他看起来不错的候选者可以移出到单独的文件中:

  • GalaSoft.MvvmLight.SL4,
  • Microsoft.Practices.ServiceLocation,
  • Microsoft.Practices.Unity.Silverlight,
  • System.Windows.Controls.Toolkit.Internals。

所有这些程序集都是从 Silverlight 应用程序(以及使用这些程序集的 Silverlight 项目)中引用的。

你能解释一下吗:

  • Q1。这些提到的程序集之间有什么区别?
  • Q2。如何将这 4 个程序集也移动到单独的 zip 文件中?

非常感谢!

附言可能,我的问题的答案在文本中:

Add a reference to a library assembly in the Silverlight SDK, or to any assembly accompanied by a valid assemblyShortName.extmap.xml mapping file.

但是我不明白这是什么意思。如果我理解正确,我需要将这些程序集(我想移出)的引用添加到 Silverlight SDK 中。但是怎么做呢?谢谢。

最佳答案

A1) 两个列表的区别是第一组程序集已经定义了必要的 *.extmap.xml 文件,Visual Studio 使用这些文件自动将每个程序集打包成一个 zip 文件,然后缓存独立于客户端(通过网络浏览器)。

如果您查看此文件夹(根据需要调整安装驱动器位置):

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>

如果您遵循位于 here 的文档,您将看到它是如何构建的。大多数部分应该是显而易见的,唯一不寻常的方面可能是扩展元素。通过在 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>

一旦该文件存在,Visual Studio 将使用它来构建一个名为 GalaSoft.MvvmLight.SL4.zip 的 zip 文件。一旦您引用 dll(只要 extmap.xll 文件与原始程序集并排),这一切都会自动发生。

关于.net - Silverlight:如何处理标准程序集(第 2 部分),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3376143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com