1

构建 Silverlight4 应用程序时,“Microsoft.Practices.Unity.Silverlight.dll”程序集不会放入单独的文件 zip 文件中,而是在 XAP 文件中。

为了保持一致,这里是“如何处理标准程序集”主题的先前问题的链接:[ Silverlight:如何处理标准程序集:如何处理标准程序集] [ Silverlight:如何处理标准程序集(第 2 部分):如何处理标准组件(第 2 部分)]

以下是已完成的操作列表:

  1. 从 Silverlight 项目及其所有库中删除了对“Microsoft.Practices.Unity.Silverlight.dll”程序集的引用;
  2. 将此 dll 复制到“C:\Project\DLL”文件夹中;
  3. 在文件夹中创建了“Microsoft.Practices.Unity.Silverlight.extmap.xml”文件,其内容如下:

    < ?xml 版本="1.0"?>

    <manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <assembly>
        <name>Microsoft.Practices.Unity.Silverlight</name>
        <version>2.0.414.0</version>
        <publickeytoken>31bf3856ad364e35</publickeytoken>
        <relpath>Microsoft.Practices.Unity.Silverlight.dll</relpath>
        <extension downloadUri="Microsoft.Practices.Unity.Silverlight.zip" />
      </assembly>
    </manifest>
    

(版本号和公钥令牌来自程序集本身)。

  1. 在 Silverlight 项目和项目使用的 1 个 Silverlight 类库中添加了对程序集的引用;
  2. 对 Silverlight 项目进行了全面重建,重建了一个网站。

我期待文件“Microsoft.Practices.Unity.Silverlight.zip”出现在网站的“ClientBin”文件夹中......但它没有......而且我不知道为什么......

可能你知道一些有用的东西?如果是这样,请告诉我。

谢谢!

4

1 回答 1

0

我下载并安装了Unity Framework 2.0

我在默认安装文件夹中添加了两个文件。

C:\Program Files (x86)\Microsoft Unity Application Block 2.0 for Silverlight\Bin

Microsoft.Practices.Unity.Silverlight.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>Microsoft.Practices.Unity.Silverlight</name>
    <version>2.0.414.0</version>
    <publickeytoken>31bf3856ad364e35</publickeytoken>
    <relpath>Microsoft.Practices.Unity.Silverlight.dll</relpath>
    <extension downloadUri="Microsoft.Practices.Unity.Silverlight.zip" />
  </assembly>
</manifest>

Microsoft.Practices.ServiceLocation.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>Microsoft.Practices.ServiceLocation</name>
    <version>2.0.414.0</version>
    <publickeytoken>31bf3856ad364e35</publickeytoken>
    <relpath>Microsoft.Practices.ServiceLocation.dll</relpath>
    <extension downloadUri="Microsoft.Practices.Unity.Silverlight.zip" />
  </assembly>
</manifest>

我从未使用过 Unity 框架,因此我决定将两个程序集包含在同一个 ZIP 文件中。为此,我将元素的downloadUri属性设置extension为两个 extmap.xml 文件中的相同文件名。在这种情况下,我使用了Microsoft.Practices.Unity.Silverlight.zip

我从 Silverlight 4.0 项目中添加了对 Microsoft.Practices.Unity.Silverlight 程序集的引用。

接下来,我选中了以下选项:通过在 Silverlight 项目的项目属性中使用应用程序库缓存来减小 XAP 大小。

重建解决方案。在主机 Web 应用程序的 ClientBin 文件夹中,重建后添加了一个新的 Zip 文件 Microsoft.Practices.Unity.Silverlight.zip。

我建议按照我使用的方法,看看是否适合你。尝试在未选中该选项的情况下重建解决方案(并清除客户端 bin 文件夹)。清理并重建它并检查它是否有任何效果。

于 2010-07-31T20:49:24.573 回答