本文转载自:http://www.pin5i.com/showtopic-26068.html

有些时候我们在设计有集成sl系统的时候总会想把xap作为基点来达到持续集成的效果。那么我们应该怎么做呢?

解决方法:

1.首先我们要用一个方法实现从源资中提取出Assembly:

  1. 1:  Assembly LoadAssemblyFromXap(Stream packageStream, String assemblyName)
  2. 2:          {
  3. 3:              StreamResourceInfo resouceInfo = new StreamResourceInfo(packageStream, "application/binary");
  4. 4:              Stream mainfestStream = Application.GetResourceStream(resouceInfo, new Uri("AppManifest.xaml", UriKind.Relative)).Stream;
  5. 5:              String appManifestString = new StreamReader(mainfestStream).ReadToEnd();
  6. 6:
  7. 7:              XElement deploymentRoot = XDocument.Parse(appManifestString).Root;
  8. 8:              List<XElement> deploymentParts = (from assemblyParts in deploymentRoot.Elements().Elements() select assemblyParts).ToList();
  9. 9:
  10. 10:              Assembly targetassembly = null;
  11. 11:
  12. 12:              foreach (XElement xElement in deploymentParts)
  13. 13:              {
  14. 14:                  String source = xElement.Attribute("Source").Value;
  15. 15:                  if (source == assemblyName)
  16. 16:                  {
  17. 17:                      StreamResourceInfo streamInfo = Application.GetResourceStream(resouceInfo, new Uri(source, UriKind.Relative));
  18. 18:                      AssemblyPart asmPart = new AssemblyPart();
  19. 19:                      targetassembly = asmPart.Load(streamInfo.Stream);
  20. 20:                  }
  21. 21:              }
  22. 22:              return targetassembly;
  23. 23:          }

复制代码

2.利用一个webClient下载指定的其他xap文件,并在下载完成后,利用上边的方法把加载后的资料还完成一个UIElement,这样我们就可以使用了.

  1. 1:  void MainPage_Loaded(object sender, RoutedEventArgs e)
  2. 2:  {
  3. 3:      //加一个xap文件所在的位置
  4. 4:      Uri address = new Uri("http://localhost:4456/ClientBin/exproject.xap");
  5. 5:      //实例一个webClient
  6. 6:      WebClient webClient = new WebClient();
  7. 7:      //注册一个下载完成事件
  8. 8:      webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted);
  9. 9:    //开始下载
  10. 10:      webClient.OpenReadAsync(address);
  11. 11:  }

复制代码

3.下载完成后通过LoadAssemblyFromXap方法还原xpa为UIElement:

  1. 1:  void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
  2. 2:  {
  3. 3:      Stream stream = Application.GetResourceStream(
  4. 4:          new StreamResourceInfo(e.Result, null),
  5. 5:          new Uri("AppManifest.xaml", UriKind.Relative)).Stream;
  6. 6:      String appManifestString = new StreamReader(stream).ReadToEnd();
  7. 7:
  8. 8:      Assembly assembly = LoadAssemblyFromXap(e.Result, "exproject.dll");//other project name.dll
  9. 9:      UIElement element = assembly.CreateInstance("exproject.MainPage") as UIElement;//other project name.mainPage
  10. 10:      this.contaner.Children.Add(element);
  11. 11:  }

复制代码

转载于:https://www.cnblogs.com/chenxizhang/archive/2010/03/10/1682288.html

Silverlight3 加载其他xap相关推荐

  1. kotlin Bean加载失败lateinit property has not been initialized

    Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creat ...

  2. Python+OpenCV 图像处理系列(1)— Ubuntu OpenCV安装、图片加载、显示和保存

    Ubuntu 16.04 下安装 Opencv sudo apt-get install libopencv-dev sudo apt-get install python-opencv 或者使用 p ...

  3. tensorflow 1.x Saver(保存与加载模型) 预测

    20201231 tensorflow 1.X 模型保存 https://blog.csdn.net/qq_35290785/article/details/89646248 保存模型 saver=t ...

  4. tensor和模型 保存与加载 PyTorch

    PyTorch教程-7:PyTorch中保存与加载tensor和模型详解 保存和读取Tensor PyTorch中的tensor可以保存成 .pt 或者 .pth 格式的文件,使用torch.save ...

  5. 深度学习原理与框架-CNN在文本分类的应用 1.tf.nn.embedding_lookup(根据索引数据从数据中取出数据) 2.saver.restore(加载sess参数)...

    1. tf.nn.embedding_lookup(W, X) W的维度为[len(vocabulary_list), 128], X的维度为[?, 8],组合后的维度为[?, 8, 128] 代码说 ...

  6. Nignx集成fastDFS后访问Nginx一直在加载中解决

    问题描述: Nginx集成fastDFS后,访问Nginx一直在加载中,得不到页面.查看Nginx的错误日志: 可以看到是fastdfs.conf的配置错误,tracker的ip没有修改: fastd ...

  7. Android Studio中RecycerView依赖库加载问题

    依赖包导入思考: 参考资料:recycleview导包问题 打开修改本项目中的build.gradle; 切勿着急添加包,应当提前查看其中的版本号(因为加载的v7包要和其版本保持一致性): 例如: 因 ...

  8. OFRecord 数据集加载

    OFRecord 数据集加载 在数据输入一文中知道了使用 DataLoader 及相关算子加载数据,往往效率更高,并且学习了如何使用 DataLoader 及相关算子. 在 OFrecord 数据格式 ...

  9. 在C++中加载TorchScript模型

    在C++中加载TorchScript模型 本教程已更新为可与PyTorch 1.2一起使用 顾名思义,PyTorch的主要接口是Python编程语言.尽管Python是合适于许多需要动态性和易于迭代的 ...

最新文章

  1. 服务器ip 计算机名,服务器计算机名称或者ip地址
  2. c++后台管理系统_【获奖案例】第三届全国医院物联网大会“中国医院物联网应用十大优秀案例”安徽医科大学第一附属医院手术室行为管理系统...
  3. c语言double变量后面几个0,C语言double型变量的初始化到底是是0还是0.0?
  4. python课程价格哪个好-上海Python线上远程课
  5. Apache Hook机制解析(下)——实战:在自己的代码中使用Apache的钩子
  6. js监听select值变化_网络编程——C++实现socket通信(TCP)高并发之select模式
  7. php中一定要写 吗,PHP编程一定要改掉的5个不良习惯
  8. 给vmware虚拟机中的ubuntu 14.04扩大磁盘分区
  9. 程序员必须关注的技术趋势,内附PDF下载链接
  10. 【今日CV 计算机视觉论文速览】 6 Mar 2019
  11. java 布局实例,HarmonyOS Java UI之StackLayout布局示例
  12. linux Vue+nginx+django 实现前后端分离
  13. 【爬虫剑谱】三卷4章 拾遗篇-关于lxml库下etree模块中Xpath表达式的使用小结
  14. python_百文买百鸡问题
  15. kotlin支持jdk1.8编译,使用Java8特性
  16. vijos1846 [NOIP2013] 华容道【最短路】
  17. java中控指纹仪_java 中控URU4500指纹仪开发
  18. 算术平均数及几何平均数
  19. 鼠标右键菜单打开慢的解决方式
  20. c++实验6-【项目3:矩阵求和】

热门文章

  1. Vagrant (一) - 基本知识
  2. 树(2)-----leetcode(层、深度、节点)
  3. Linux 命令行提示符路径显示
  4. Facebook宣布进一步推广Live Video功能
  5. 20145209 2016-2017-2 《Java程序设计》第4周学习总结
  6. 将Excel数据导入mysql数据库的几种方法
  7. mysql 主从不同步
  8. 【Scheme归纳】4 高阶函数
  9. 【Eclipse】启动时报错:No Java virtual machine (已解决)
  10. [每日一题] 11gOCP 1z0-053 :2013-10-1 persistent lightweight jobs...........................11