Silverlight:如何处理标准组件(第3部分)

时间:2010-07-31 14:49:52

标签: silverlight silverlight-4.0 xap dynamically-loaded-xap

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

为了保持一致,以下是“如何处理标准装配”主题的先前问题的链接: [Silverlight: how to handle standard assemblies:如何处理标准装配] [Silverlight: how to handle standard assemblies (part 2):如何处理标准装配(第2部分)]

以下是完成的操作列表:

  1. 从Silverlight项目及其所有库中删除了对“Microsoft.Practices.Unity.Silverlight.dll”程序集的引用;
  2. 将此dll复制到“C:\ Project \ DLL”文件夹;
  3. “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>
    
  4. (版本号和公钥令牌来自程序集本身)。

    1. 将程序集的引用添加到Silverlight项目和项目使用的1个Silverlight类库中;
    2. 执行Silverlight项目的完全重建,重建了一个网站。
    3. 我期待文件“Microsoft.Practices.Unity.Silverlight.zip”出现在网站的“ClientBin”文件夹中......但它没有..我不知道为什么..

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

      谢谢!

1 个答案:

答案 0 :(得分: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 Framework,因此我决定将两个程序集都包含在同一个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文件夹)。清理并重建并检查它是否有效。