6

默认情况下,Visual Studio 将所有 dll 复制到每个项目的 bin 文件夹中。这还包括系统 dll(mscorlib.dll 和 System.dll 除外),例如 System.Xml.Linq、System.ComponentModel.Composition(自 SL4 起包含)等。

由于这些文件包含在每个 XAP 中,因此 XAP 的大小会显着增加。在我有限的测试中,将“复制本地”设置为 false 似乎并没有破坏任何东西。为什么 Visual Studio 将这些文件添加到 bin 路径?由于用户已经拥有 Silverlight,我可以假设这些程序集已经安装在每个用户的 GAC 中,还是我遗漏了什么?

4

3 回答 3

5

您提到的文件不包含在 Silverlight 的运行时安装中。使用这些库的 Silverlight 应用程序必须将它们作为下载的一部分提供给用户。

您可以通过在项目属性页面的 Silverlight 选项卡中设置“使用库缓存来减少 XAP 大小”选项来最小化一些影响。

此选项会使这些文件中的每一个都放置在单独的 Zip 文件中,这些文件将放置在与 XAP 相同的文件夹中。

这在您的站点可能有多个 Xap 用于各种应用程序或您经常发布新版本的情况下很有帮助。对于很少更改或被许多唯一访问者访问的单个应用程序,它没有那么有用。

于 2010-07-06T11:54:56.797 回答
0

默认情况下,通常存储在 GAC 中的特定于框架的 dll 不会复制到输出 bin 目录,您可以假设它们将在客户端计算机上。

上面提到的 Copy Local 默认为 false,所以我相信在某个阶段它们被更改为 true。

但是,在不确切知道 dll 指的是什么的情况下,我不能准确地说

于 2010-07-06T10:34:56.820 回答
0

我认为这里的关键是“似乎没有破坏任何东西”。因为 Silverlight 应用程序可以在具有不同版本的许多平台和浏览器上运行,所以您不能假设某些东西会起作用,因为它可以在您的机器上运行,甚至在一两个其他机器上运行。

如果包含 DLL 是因为可能需要它们,因此如果您计划广泛分发您的应用程序,您需要确定它们会在那里。

例如,我一直在开发一个基于 Prism 的应用程序,它延迟加载模块。大多数 XAP 已减少到大约 20k,因为辅助模块保证能够使用它们在 Shell XAP 中所需的 DLL。

于 2010-07-07T02:00:12.130 回答