编译并运行快速入门

需要在VisualStudio 2010上运行此快速入门示例

代码下载:ModularityWithMef.zip

先重新生成解决方案

再按F5运行此示例

说明:

在此快速入门示例解决方案的

ModularityWithMef.Desktop程序集中

加入了生成成功时的“后期生成事件命令行”

IF NOT EXIST "$(TargetDir)\DirectoryModules"

mkdir "$(TargetDir)\DirectoryModules"

此命令含义为:

如果在此程序集的bin目录中没有DirectoryModules目录

则创建此目录

预先生成事件/后期生成事件命令行的宏请看MSDN的注释:

http://msdn.microsoft.com/zh-cn/library/aa833259(v=vs.80).aspx

可以在程序集->属性->生成事件中查看修改这些命令行

ModuleB程序集的成功生成时的“后期生成事件命令行”

xcopy "$(TargetDir)ModularityWithMef.Desktop.ModuleB.dll"

"$(SolutionDir)ModularityWithMef.Desktop\bin\$(ConfigurationName)\DirectoryModules\" /Y

含义为

把自身生成的dll复制到DirectoryModules目录下

ModuleD的程序集也有类似的命令行

另外

ModuleE和ModuleF生成的DLL会被拷贝到

ModularityWithMef.Desktop程序集的debug目录下

演练

运行程序

1.

主窗口包含六个模块

每个模块都展示了各自的初始化状态。

应用程序加载的时候

程序就发现并初始化了模块A和模块D

程序启动的时候,通过监视目录,

发现了ModuleD,就把它初始化了。

当模块A可用的时候才可被加载

模块A依赖于模块D

当模块D加载之后,模块A才被初始化

窗口下部的跟踪区域显示了模块初始化的信息

注意:

如果没有依赖关系的话,模块的加载是无顺序的。

2.

鼠标移动到模块A控件上,显示了一个描述性提示,如下图:

3.

提示信息为:

当前控件的状态,是否被发现,

是否被初始化,下载时间和依赖性等信息

4.

点击模块B和模块C

两个模块的初始化信息都会随之改变

点击这两个模块会触发这两个模块的加载事件

系统通过监视文件夹发现模块B

模块C是被直接引用到系统中的

这两个模块都是在需要的时候才被加载的

5.

当点击模块F的时候,

模块E和模块F被加载。如下图

虽然模块F先被点击

但是由于依赖关系的原因

系统先初始化模块E,再初始化模块F

 http://www.cnblogs.com/liulun/archive/2012/03/19/2405940.html

【翻译】WPF应用程序模块化开发快速入门(使用Prism+MEF)的更多相关文章

  1. WPF开发快速入门【7】WPF的拖放功能(Drag and Drop)

    概述 本文描述WPF的拖放功能(Drag and Drop). 拖放功能涉及到两个功能,一个就是拖,一个是放.拖放可以发生在两个控件之间,也可以在一个控件自己内部拖放.假设界面上有两个控件,一个Tre ...

  2. HealthKit开发快速入门教程之HealthKit数据的操作

    HealthKit开发快速入门教程之HealthKit数据的操作 数据的表示 在HealthKit中,数据是最核心的元素.通过分析数据,人们可以看到相关的健康信息.例如,通过统计步数数据,人们可以知道 ...

  3. HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID

    HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID HealthKit开发准备工作 在开发一款HealthKit应用程序时,首先需要讲解HealthKit中有哪些类,在i ...

  4. HealthKit开发快速入门教程之HealthKit开发概述简介

    HealthKit开发快速入门教程之HealthKit开发概述简介 2014年6月2日召开的年度开发者大会上,苹果发布了一款新的移动应用平台,可以收集和分析用户的健康数据.该移动应用平台被命名为“He ...

  5. Apple Watch开发快速入门教程

     Apple Watch开发快速入门教程  试读下载地址:http://pan.baidu.com/s/1eQ8JdR0 介绍:苹果为Watch提供全新的开发框架WatchKit.本教程是国内第一本A ...

  6. Transform组件C#游戏开发快速入门

    Transform组件C#游戏开发快速入门大学霸 组件(Component)可以看作是一类属性的总称.而属性是指游戏对象上一切可设置.调节的选项,如图2-8所示.本文选自C#游戏开发快速入门大学霸   ...

  7. 游戏控制杆OUYA游戏开发快速入门教程

    游戏控制杆OUYA游戏开发快速入门教程 1.2.2  游戏控制杆 游戏控制杆各个角度的视图,如图1-4所示,它的硬件规格是本文选自OUYA游戏开发快速入门教程大学霸: 图1-4  游戏控制杆各个角度的 ...

  8. SpringBoot开发快速入门

    SpringBoot开发快速入门 目录 一.Spring Boot 入门 1.Spring Boot 简介 2.微服务 3.环境准备 1.maven设置: 2.IDEA设置 4.Spring Boot ...

  9. seaJs模块化开发简单入门

    随着前端技术的日益成熟,功能越来越丰富强大,规范也越来越健全,在这样的背景环境下很快便有了CommonJs.AMD.CMD等一系列规范,使前端发开趋向模块化.规范化.CMD模块化的代表之一就是国内开发 ...

随机推荐

  1. mysql的auto-rehash简介

    今天在看mysql的配置文件的时候,发现有"auto-rehash"不明白什么意思,在此记录一下,auto-rehash是自动补全的意思,就像我们在linux命令行里输入命令的时候 ...

  2. ctfd搭建

    CTFd 0x00 前言 搭个CTF平台,看能不能带动一下学校的CTF参与度. 一个下午都在搭这个平台:O 抓瞎摸索,最后成功用Apache+mod_wsgi也算是功德圆满了. 进入正题: 系统: C ...

  3. CRM项目讲解和django知识点回顾

    今天想把之前写的CRM项目梳理下,顺便回顾一下djiango的部分重要知识. 1.登录页面(包含简单验证码) 首先来看下CRM的登录页面,样式啥的不重要,大家可以去jquery ui的网站上或者其他地 ...

  4. Liunx 用户权限之目录

    总结一下: 今天又对liunx权限的认知多了一点,就是关于目录的权限的作用 可以打个比方来形容就是:相当于一个大门 只有目录权限都有的情况下,才能够对目录中的文件进行目录权限操作 例如:drwxrwx ...

  5. Efficient Estimation of Word Representations in Vector Space (2013)论文要点

    论文链接:https://arxiv.org/pdf/1301.3781.pdf 参考: A Neural Probabilistic Language Model (2003)论文要点  https ...

  6. 【未知来源】K-th String

    题意 求有多少种 前 \(n\) 个小写字母的排列 \(t\),满足其所有子串按字典序从小到大排列,第 \(k\) 个子串是一个给定字符串 \(s\).答案模 \(10^9+7\). \(1\le n ...

  7. Java 基础知识点滴(1)

    1. ==与equals的区别 ==是用来判断两个变量的值是否相等.要比较两个基本变量或引用变量是否相等,只能用==: equal用来判断两个独立对象里面的内容是否一样. 例子: String s1 ...

  8. filter和filter_by 的区别

  9. UVA - 1640 The Counting Problem (数位dp)

    题意:统计l-r中每种数字出现的次数 很明显的数位dp问题,虽然有更简洁的做法但某人已经习惯了数位dp的风格所以还是选择扬长避短吧(说白了就是菜啊) 从高位向低位走,设状态$(u,lim,ze)$表示 ...

  10. Django + pyecharts 实现数据可视化

    1 创建django项目 :Visualization and  APP :Demo >>django-admin startproject Visualization >>p ...