<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Jianqiang's Silverlight Blog</title><subtitle type="text">Focus on PRISM, MVVM, IoC and MMORPG games</subtitle><id>http://feed.cnblogs.com/blog/u/16988/rss</id><updated>2012-04-26T11:37:24Z</updated><author><name>Jianqiang Bao</name><uri>http://www.cnblogs.com/Jax/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Jax/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/16988/rss"/><entry><id>http://www.cnblogs.com/Jax/archive/2012/03/12/2391410.html</id><title type="text">UI端编程的22个问题</title><summary type="text">接下来我所要讲解的，是一个宏大的主题，结合了我这些年来从事UI端编程的经验，我将用一系列文章来搭建用户界面（UI）的底层框架，这里我使用的技术实现是Silverlight，但是，你将会发现，我所介绍的都是UI端的设计思想，所以是超越于语言，是不局限于技术实现的，所以，它将适用于Windows Form, WPF, FLEX, HTML5，以及所有手机编程领域Phone7, IOS, A...</summary><published>2012-03-12T02:45:00Z</published><updated>2012-03-12T02:45:00Z</updated><author><name>Jianqiang Bao</name><uri>http://www.cnblogs.com/Jax/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Jax/archive/2012/03/12/2391410.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Jax/archive/2012/03/12/2391410.html"/><content type="html">&lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 接下来我所要讲解的，是一个宏大的主题，结合了我这些年来从事UI端编程的经验，我将用一系列文章来搭建用户界面（UI）的底层框架，这里我使用的技术实现是Silverlight，但是，你将会发现，我所介绍的都是UI端的设计思想，所以是超越于语言，是不局限于技术实现的，所以，它将适用于Windows Form, WPF, FLEX, HTML5，以及所有手机编程领域Phone7, IOS, Android。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 分类如下：&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 框架级别：&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1） Wait Cursor&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 在调用Service端方法的时候，如何能锁住当前的UI，直到Service返回结果，用户才能继续操作。&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2） Chain of Async methods&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 如何将异步方法转化为同步方法，这将使我们的代码更加清晰。&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 3） Domain Cache&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 如何在客户端缓存一些数据，比如说国家列表，学校列表，等等。&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 4） Code Injection&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 如何巧妙的注入一些代码，使UI端的代码更优雅。&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 5） UI Logger&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 如何记录UI端的日志。&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 6） Exception&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 如何设计Service端的异常的处理机制，就是有Exception，也要友好的显示给UI端。&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 7） Abstraction&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 如何设计用户界面的接口和基类。&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;功能设计：&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8） View Split&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 如何更加有效的将一个复杂的页面拆分成多个小页面。&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 9） Navigation&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 如何设计导航，包括菜单，导航树，导航器。&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 10） On-Site Edit&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 如果设计在线编辑（On-Site Edit），也就是通常所谓的CRUD，一揽子解决方案。&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 11） Popup&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 如何统一弹出框。&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 12） Server paging/filter/sorting&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 如何处理大量数据的显示，比如分页，排序和过滤，可以是UI端来做，也可以是Service端来做。&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;MVVM设计：&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 13） MVVM&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 如何将数据从界面逻辑中剥离出来。&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 14） Event&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 如何建立我们自己的事件机制&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 15） Command&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 如何建立我们自己的命令机制，以及如何将事件转化为命令&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 16） UI Unit Test&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 如何设计UI端的单元测试。&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;综合设计：&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 17） Validation&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 如何设计客户端的验证体制，从而让用户总是提交有效的数据。&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 18） Concurrency&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 如何处理并发操作，当然，这也是从UI、Service和DB层同时考虑的。&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 19） Mock data&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 如何Mock一些数据，使UI端的开发不依赖于Service&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 20） Print/Export&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 如何打印和导出数据&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 21） Performance Tuning&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 如何调试性能，当然，不止局限于UI端。&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 22） Work with UX team&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 如何组织UI端项目的结构，以及如何与美工协作。&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 总而言之，这都是一些经验的汇总，是一些通用的模式，出于对GOF的Design Pattern的尊敬，我在上面只列出了22个场景（其实是我实在想不出第23个，而又不想随便写一个来凑数）。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Jax/aggbug/2391410.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2012/03/12/2391410.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Jax/archive/2011/10/20/2219115.html</id><title type="text">写给三年级小学生的科学八卦史(10月20日 课程备案)</title><summary type="text">Ice break：拍七游戏（10分钟） 这是我们十几个人经常聚会吃吃喝喝，在喝酒的时候玩的一个游戏 规则介绍：大家围成一个圈，从1到100逆时针轮流报数，遇到7的倍数或者带7的数字就拍手， 输的学生站起来鞠躬。然后随便报一个数字，继续玩下去。到１００再重新从１开始。 第2步：加大难度，拍手后反转报数方向。 第3步：教学生一些小技巧，比如从４４或５８或６８开始都是害人的，而其他数字会害到...</summary><published>2011-10-20T08:35:00Z</published><updated>2011-10-20T08:35:00Z</updated><author><name>Jianqiang Bao</name><uri>http://www.cnblogs.com/Jax/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Jax/archive/2011/10/20/2219115.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Jax/archive/2011/10/20/2219115.html"/><content type="html">&lt;p&gt;&lt;b&gt;Ice break&lt;/b&gt;&lt;b&gt;：拍七游戏（10&lt;/b&gt;&lt;b&gt;分钟）&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;这是我们十几个人经常聚会吃吃喝喝，在喝酒的时候玩的一个游戏&lt;/p&gt;  &lt;p&gt;规则介绍：大家围成一个圈，从1到100逆时针轮流报数，遇到7的倍数或者带7的数字就拍手，&lt;/p&gt;  &lt;p&gt;输的学生站起来鞠躬。然后随便报一个数字，继续玩下去。到１００再重新从１开始。&lt;/p&gt;  &lt;p&gt;第2步：加大难度，拍手后反转报数方向。&lt;/p&gt;  &lt;p&gt;第3步：教学生一些小技巧，比如从４４或５８或６８开始都是害人的，而其他数字会害到自己。（画一个图来说明）&lt;/p&gt;  &lt;p&gt;总结：对于我们每个人来说，数学都是从算术开始的，即1，2，3，4等等等等。现代社会的我们要幸福的多。阿拉伯数字已经作为我们进行四则运算的符号，这是十分方便的，我们甚至可以直接通过计算器和计算机的输入来得到结果，而古人，他们在科学上的每一个进展都有付出艰辛的过程，甚至是鲜血和生命。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;比如说，在很久很久以前，古希腊有个数学家毕达格拉斯，他是欧洲最早发现勾股定理的人&lt;/p&gt;  &lt;p&gt;&lt;b&gt;由此引入勾股定理以及中国式证明（&lt;/b&gt;勾三股四弦五&lt;b&gt;）。&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://baike.baidu.com/albums/366/366.html#0$0e655ca78e3eb5ddd14358f2"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image001[4]" border="0" alt="clip_image001[4]" src="http://images.cnblogs.com/cnblogs_com/Jax/201110/201110201634494259.jpg" width="203" height="156" /&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;毕达格拉斯的身边聚集了当时全世界最聪明的人，号称毕达格拉斯学派，当时被奉为科学界的权威，他们认为数只有整数或者分数（整数之比），其实这与他们发现的勾股定理是矛盾的。后来毕达格拉斯学派有一个学生，他发现边长为1的正方形，它的对角线（根号2）却不能用整数之比来表达。这就触犯了这个学派的信条，于是规定了一条纪律：谁都不准泄露存在根2（即&lt;a href="http://baike.baidu.com/view/1167.htm"&gt;无理数&lt;/a&gt;）的秘密而这个学生呢，他因为发现了无理数，当时他们辩论正好在大海上航行，于是他便被扔到了大海之中。他的名字叫做希帕索斯。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;提问，鞠躬最多的学生：一个大铅球和一个小木球，同时从五楼扔下来，哪个小落地呢？&lt;/p&gt;  &lt;p&gt;&lt;b&gt;由此而引出伽利略。&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;在很久很久以前，人们都信基督教，教会的权力特别大。他们认为人是由上帝创造的，这个世界是以人为中心的，所以就连太阳也都是围着地球转的，也就是“地心说”。谁也不能对此怀疑，否则就会被流放，终身监禁，甚至处死。&lt;/p&gt;  &lt;p&gt;但就是有不信邪的，而且前仆后继，分别用鲜血和生命为我们铺平科学光明的道路。&lt;/p&gt;  &lt;p&gt;第一个就是哥白尼。当时的人，只有2种职业，要么参军，要么去教会。你们可能想象不到，哥白尼竟然是一个小教堂的主教。但是他几十年观察发现，地球和其他行星都是围绕太阳转的，也就是“日心说”。为此他写了一本书，叫做《天体运行》，但是他生前不敢发表，因为他怕惹来杀身大祸，直到临死前才同意他的学生拿到德国印刷出版。这本书引起一场轩然大波，教会的权威第一次受到质疑。&lt;/p&gt;  &lt;p&gt;接下来出场的是布鲁诺，他坚持宣扬《天体运行》中的日心说理论，为此他被教会抓住，审批，监禁，最终被火烧死，临死前还被割掉了舌头，怕他在刑场上煽动更多的人。&lt;/p&gt;  &lt;p&gt;在后面就是这位做实验测试木球和铁球哪个先落地的伽利略了，在此之前呢，大家都信奉亚里士多德的理论，认为质量重的自然先落地。但伽利略则是一位怀疑权威的人。那么他在日心说中做了什么贡献呢？——他发明了天文望远镜，第一个观察到了宇宙是什么样子，亲眼看到了连地球在内的各大行星都是围绕太阳运转的。他的这些行动引起了教会的不安，把他骗到意大利终身软禁直到被折磨致死。&lt;/p&gt;  &lt;p&gt;后来又有人几十年如一日观察星象变化并记录在日记中，后来又有人根据这些日记总结出了行星运动的规律，包括那颗哈雷彗星，中国人称之为扫帚星。再后来，又有人根据这些公式计算出了之前一直没有观察到的一颗行星，也就是海王星。直到最后，教会终于认输，承认了之前对伽利略等人做出的审批都是错误的。所以现在我们大家潜意识里都是地球围着太阳转，与这些前人的贡献是分不开的。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;我们看到天文学领域的革命如火如荼，我下面要介绍的是生物学的革命。&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;当时教会认可的是盖伦的《经典医学》，要求所有医生都根据这本书来诊病，所有医学院校都将此作为教材。但是，盖伦，他这辈子只解剖过猪羊狗这些动物，并没有真正解剖过一个人体，所以他书中的很多观点都是错的，可以给病猪治病，但是不能给病人治病。其实这也不能怪盖伦，因为当时教会颁布了一条法律，严禁解剖人体。因为他们认为人体是上帝最完善的设计，不容侵犯，盗尸处以死刑。所以那时候有罪的人都是上绞刑架，都要留全尸。&lt;/p&gt;  &lt;p&gt;但是偏偏有人不信邪，一定要解剖人体看个究竟。&lt;/p&gt;  &lt;p&gt;事情的开始是，一些犯人被吊死，尸体悬挂在城门示众，但是到晚上却经常不翼而飞。于是有个晚上值班的士兵，埋伏在绞刑架的尸体后面，想侦破这起案件。果然到深夜，有个人影出现了，来到绞刑架前，卸下一具尸体背在身上，然后一晃而过，迅速消失在夜色之中。那个士兵被吓得浑身发抖，等他定下神来，那个人影已经离他有一段距离了。他只好紧走两步从后面悄悄跟上，但又不敢十分靠近，一直追到一个院子里的一个地道口，这个地道不大，迈下了三九二十七个台阶，再走九九八十一步，右边就是一个密室，门关着，缝里泄出一线灯光。这个士兵摸到门前，顺着门缝看过去，不看还好，只吓得口吐白沫，当场就晕了过去。里面是什么啊？是一个人，右手持一把弯刀，左手举着一根刚刚砍下的大腿，血肉模糊，而屋里面则摆满了人的头骨或手臂。&lt;/p&gt;  &lt;p&gt;注意，这不是什么变态杀人狂，而是一个十八岁的学生，他的名字叫维萨留斯。他对盖伦的《经典医学》里面的人体知识很是怀疑，于是他冒天下之大不韪，干起了盗尸的事情，成为了人类历史上第一个解剖人体的科学家。&lt;/p&gt;  &lt;p&gt;门外的士兵昏死了过去，倒地的声音惊到了维萨留斯，于是他知道这个地方呆不下去了，又开始了四处流浪的科学研究生活。在流浪的生涯里，他画出了第一张人体解剖图，并指出了盖伦的书中２００多处错误。他这样的举动触怒了教会，竟然在维萨留斯不在场的情况下宣判了维萨留斯的死刑。&lt;/p&gt;  &lt;p&gt;这个故事告诉我们，在早期的科学研究中，因为有教会的存在，每一个小的进步都要付出血的代价。而我们现在，对于学术的不同见解，也仅仅是停留在纸面上，而不会涉及到人身。这说明时代进步了，我们要为自己所处的这个开化的时代而感到幸福。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;大家有没有听过曹冲称象的故事啊？&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;对，就是浮力。&lt;/p&gt;  &lt;p&gt;同样的故事，在古希腊也有。只是，这里的主角是阿基米德。&lt;/p&gt;  &lt;p&gt;当时希腊皇帝花了１０斤金子请工匠为他打造了一个纯金的王冠，但是皇帝不敢肯定这王冠是否有掺假，就是说工匠用别的材料替换了一部分金子。他把这个问题交给了阿基米德。阿基米德在洗澡的时候发现了水的浮力，并且推断出，往盛满水的池子里放入一样重的金块和银块，溢出来的水是不同的。当时他兴奋过度，一丝不挂的就从浴池中跑出家，穿过大街直到皇宫，沿途大喊“我发现了我发现了”。&lt;/p&gt;  &lt;p&gt;事实&lt;/p&gt;  &lt;p&gt;实验证明，黄金王冠中确实有掺了一些银。而阿基米德也成为了历史记载上第一个裸奔的人。&lt;/p&gt;  &lt;p&gt;有关阿基米德的小故事很多很多，主要体现在战争中。我们知道阿基米德是希腊人，而当时世界上罗马帝国很强大，罗马想吞并希腊，就派了一支军队来攻打希腊。&lt;/p&gt;  &lt;p&gt;阿基米德把他在科学上的研究成果在保卫祖国的战斗中发挥的淋漓尽致。&lt;/p&gt;  &lt;p&gt;首先他发明了投石机。就是把一根长木头架在一个支点上，把巨大的石块放在木头的一头，通常是距离支点近的一头，这样就可以很省力的推动木头的另一头，从而把石头发射出去（我要画一个图来说明这个道理）。这就是著名的杠杆定理。木头越长，就能撬动越重的石头。阿基米德后来甚至吹牛说，只要给他一个支点，以及一根足够长的木头，他甚至可以撬起地球。&lt;/p&gt;  &lt;p&gt;在第一次攻城战中，罗马军队被希腊人的这种新式武器——投石机打得损失惨重。&lt;/p&gt;  &lt;p&gt;接下来的攻城战，罗马军队从海路偷袭。等希腊人发现的时候，罗马的军舰已经快要到岸了。阿基米德立刻下令全城妇女带上自己的梳妆镜到海岸集合。她们分散在岸边排成弧形，每人掏出了一面镜子。阳光照射湖面，立即发出以速速强烈的光芒，这些光束渐渐集中到船上，对准船帆，最后罗马军队不是丧身火海就是丧身地中海。&lt;/p&gt;  &lt;p&gt;这场胜利是利用了光线的可逆原理，将太阳光用镜子聚集起来，强度和热度不亚于一团大火。当然那天幸亏有太阳，要是阴天或者下雨就完蛋了。但是后来一直有人不相信，认为是神话，直到１７４７年，法国的一个科学家做了一个实验，用了３６０面镜子，将７０米外的火柴堆点燃，大家才相信阿基米德的这个事迹不是谣传。&lt;/p&gt;  &lt;p&gt;不过可惜的是，希腊防守了３年，最后还是没有守住。阿基米德当时７５岁了，一个罗马士兵冲进他房间的时候，他正在地上画各种图形。他训斥那个士兵不要打扰他的研究，但是那个士兵不由分说就把阿基米德杀死了。&lt;/p&gt;  &lt;p&gt;阿基米德被后世称为“力学之父”。&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;找一个计算：1+2+3+4+5+&lt;/b&gt;&lt;b&gt;……+100=?&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;等差数列公式是高斯6岁就发明的。高斯这个人，被誉为数学王子。他19岁的时候，也就是他大学一年级的时候，第一个证明了正十七边形是可以用直尺和圆规画出来的，这是他一生最得意的成就，为此他嘱咐后人把正十七边形画在他的墓碑上。但是后人在画这个正十七边形的时候却发现，这机会就是一个圆形，因为边数太多了，所以别出心裁，用同样的方法刻制了一个正十七角星在高斯的墓碑上。高斯这个人嘛，比较怪，他在数学领域取得了很多重大成就，可是却跑到天文台去做台长，就是不做专业研究数学的事情。他喜欢把他的发现记录到日记本中，可是为了他又不想让别人看懂他的日记，所以就全都用他自己定义的代号来写这些日记。后人在研究他日记的时候可费了老鼻子的劲了，也只破解了三分之二的日记内容，仅仅如此，仍然发现了很多他在别人之前就发现了的公理和公式。（比如说非欧几何，太深就不介绍了）&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;有没有同学讲一下牛顿的故事啊？&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;有一天啊，他站在苹果树下发呆，也许是在思考一些科学证明。突然，一个苹果从树上落下，差点砸到了他。换做我啊，我可能就把苹果洗洗吃了；而牛顿呢，却提出了一个问题：为什么苹果掉在地面而不是掉到天上呢？哦，原来地球对地球上的任何物体都有吸引，所以苹果会向掉到地面，而不是天上——这就是著名的万有引力。后来，牛顿在此基础上提出了牛顿三大定律，我们现在物理学的力学框架基本就是牛顿奠定的。&lt;/p&gt;  &lt;p&gt;要说牛顿这个人啊，他活了80多岁。一辈子没结婚，他实在没有经历去谈情说爱。牛顿很像我们现在的IT男，就是只会赚钱不会花钱享受，对衣着不讲究，不在意别人的感受，不懂得生活情调。他只在年轻的时候谈过一个女朋友，本来这个女友已经很能容忍牛顿只顾科学研究而对情感生活一无所知的怪人了，可是后来牛顿做了几件过分的事情，一次是他对女友讲苹果的事情，他讲话的时候喜欢举着冒烟的烟斗，时不常要抽一口，讲着讲着太入神了，他竟然把他女友的手往烟斗里填，在牛顿看来，他是要往烟斗里面填烟叶。&lt;/p&gt;  &lt;p&gt;这事过去不久，牛顿被女友安排去做早饭，其实也很简单，就是煮个鸡蛋吃一吃。可是过了十分钟，他女友去取煮好的鸡蛋时，却发现锅里放的是牛顿的怀表。&lt;/p&gt;  &lt;p&gt;于是他女友彻底崩溃了，悄悄离开了牛顿的家，临走前留了封信：抱歉，我打扰了您的生活。您属于整个宇宙，而不会属于我。&lt;/p&gt;  &lt;p&gt;教科书上你们会看到同样煮鸡蛋的例子，但为了照顾伟人的形象，就进行了一些冷处理，把关于情感的细节删掉了。总之，牛顿终生未娶。&lt;/p&gt;  &lt;p&gt;牛顿不善于打理生活，赚钱也是入不敷出，后来他的好朋友当上了英国财政大臣，于是就给牛顿安排了英国造币厂厂长的差事，这个职位不忙但是很赚钱，所以牛顿的后半生是衣食无忧的。但这其实有利有弊，他开始广泛和教会打交道，开始醉心于炼金术和神学，甚至写了１５０万字的专著来阐释他之前的科研成果如何能和上帝扯上关系。&lt;/p&gt;  &lt;p&gt;牛顿活了８０岁，他的前４０年研究科学，后４０年研究上帝。他浪费了４０年的时光，不然可以在科学领域做出更大贡献。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;科学面前，人人平等&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;有些人也许是天生聪明，所谓的神童，比如说高斯，比如说牛顿，他们就适合做科学研究，但是不要认为自认为生性迟钝，或者环境不好，就轻易放弃，我接下来要讲的一个科学上的伟大发现就是由一个平凡人完成的。&lt;/p&gt;  &lt;p&gt;他的名字叫列文虎克。他有２点特殊之处：一是他活到了９１岁，而且工作到９１岁，二是他经历的单纯，他是荷兰人，他的职业是当地市政府的看门人，而且到死也没有换过工作，也没有离开过荷兰一步。但就是这个原地不动的普通人，却干出了一件让科学界震惊的事，享誉全球。&lt;/p&gt;  &lt;p&gt;话说列文虎克２０多岁就在当地市政府做看门人，他就想啊，我得找点事情来做，才对得起我的这些时间是不是？一个偶然机会，他得到一个凸面镜，发现能放大镜子下的东西。可惜这镜片已经很模糊，他就决心重新磨一个。从此，只要有空余时间，他就在磨镜片。你们不是学过李白的一首诗吗？只要功夫深，铁杵磨成针。这哥们就这样迷上了磨镜片，而且一磨就是７０年，他门房里间的屋子是当时世界上最大、最齐全的透镜仓库。而且这哥们有个怪癖，就是他发现自己磨出来的镜片有一点瑕疵，就会立刻返工，如果还不满意，就一把摔碎在地。&lt;/p&gt;  &lt;p&gt;磨出来镜子，不能就摆在屋子里装饰啊。他就喜欢拿着镜子到处去照，他把各种东西，比如木块、虫子、头发、种子，通通拿到镜子下去找。他发现原本是光滑的木块在他的镜子下竟然是坑坑洼洼，洞洞眼眼；看见一个小虫子在他的镜子下竟像是一头小猪那样走动。他去观察血液，发现了里面的红血球，实实在在地观察到了之前几代科学家预测到的血液循环和毛细血管。但这还不是他的功绩，他最大的价值在于，他发现了细菌。&lt;/p&gt;  &lt;p&gt;他把雨水拿到镜子下观察，竟然发现到里面存在着一个小王国，里面有各种物质，有的像鱼，有的像蝌蚪，有直线型的，有螺旋形的，有速度块的，有速度慢的。这些物质就是细菌。并且他发现，只要一加热，这些小东西就都不见了，但放上几天后，这些小东西就又都蜂拥而至了。&lt;/p&gt;  &lt;p&gt;他把这一发现写成论文寄给英国皇家学会，立刻震惊了全世界。从此列文虎克的小门房前人来人往比集市还热闹，人们来不是到市政府办公的，而是来列文虎克这里看细菌的。直到有一天，连女王也在市长的陪同下过来参观，并亲手发给他英国皇家学会会员的认证函。&lt;/p&gt;  &lt;p&gt;列文虎克是一个没有受过正果教育的看门人，却被破例吸收为皇家学会会员，这个荣誉相当于现在的中科院院士，可以说非常牛了，但是他还是终日在市政府的门房里磨镜、观察、记录，直到他的９１岁生日那天，他立下了遗嘱，他一生磨制出了４１９块镜片（中途不满意摔碎的不计其数），制造了２４７台显微镜，以及３７５篇论文。&lt;/p&gt;  &lt;p&gt;这个故事告诉我们，科学对所有人都是公平的，聪明人只是进入的快一些，那些平凡人，只要坚持，仍然是有机会的。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;最后，介绍一个公式：&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://baike.baidu.com/albums/398/398.html#0$a6c7d717a2b9ad2dc93d6d89"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://images.cnblogs.com/cnblogs_com/Jax/201110/201110201634513934.jpg" width="204" height="69" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;这个恒等式也叫做欧拉公式，它是数学里最令人着迷的一个公式，它将数学里最重要的几个数字联系到了一起：两个超越数：自然对数的底e，圆周率 π，两个单位：虚数单位i和自然数的单位1，以及被称为人类伟大发现之一的0。数学界评价它是“上帝创造的公式”，我们只能看它而不能理解它。&lt;/p&gt;  &lt;p&gt;我希望你们大家能坚持学习，直到大学，准备好充足的知识，从而理解这个公式的意义。&lt;/p&gt;  &lt;p&gt;这也是我最后要介绍这个公式的用意。&lt;/p&gt;  &lt;p&gt;希望我今天讲的这些小故事能激起你们对学习的兴趣，等差数列、勾股定理也许很枯燥，但是当你直到这背后的许多趣事的时候，你就会觉得这个公式记起来原来不是那么难。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Jax/aggbug/2219115.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2011/10/20/2219115.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Jax/archive/2011/10/19/2217319.html</id><title type="text">Silverlight企业级开发 目录</title><summary type="text">第一部分 QuickStart（30页）第一章 相关技术简介（15页）(一)Silverlight(二)Prism(三)MVC, MVP和MVVM(四)Unity(五)MEF(六)UT for Silverlight (七)SOA/WCF(八)UIA简单介绍以上8个技术点，原理，历史，下载地址。第二章 第一个Prism程序（6页）http://www.cnblogs.com/Jax/archive/2009/05/30/1491921.html第三章 搭建Service框架（8页）为第2章创建的Prism程序搭建Service，并完善项目结构。第二部分 Prism研究（83页）第四章 Unit</summary><published>2011-10-19T02:51:00Z</published><updated>2011-10-19T02:51:00Z</updated><author><name>Jianqiang Bao</name><uri>http://www.cnblogs.com/Jax/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Jax/archive/2011/10/19/2217319.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Jax/archive/2011/10/19/2217319.html"/><content type="html">&lt;p&gt;&lt;strong style="font-size: 18pt;"&gt;第一部分&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt; &lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;QuickStart&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;（&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;30&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;页）&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第一章 &lt;/strong&gt;&lt;strong&gt;相关技术简介（15&lt;/strong&gt;&lt;strong&gt;页）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(一)&lt;/strong&gt;&lt;strong&gt;Silverlight&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(二)&lt;/strong&gt;&lt;strong&gt;Prism&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(三)&lt;/strong&gt;&lt;strong&gt;MVC, MVP&lt;/strong&gt;&lt;strong&gt;和MVVM&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(四)&lt;/strong&gt;&lt;strong&gt;Unity&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(五)&lt;/strong&gt;&lt;strong&gt;MEF&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(六)&lt;/strong&gt;&lt;strong&gt;UT for Silverlight &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(七)&lt;/strong&gt;&lt;strong&gt;SOA/WCF&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(八)&lt;/strong&gt;&lt;strong&gt;UIA&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;简单介绍以上8个技术点，原理，历史，下载地址。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第二章 &lt;/strong&gt;&lt;strong&gt;第一个Prism&lt;/strong&gt;&lt;strong&gt;程序（6&lt;/strong&gt;&lt;strong&gt;页）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;http://www.cnblogs.com/Jax/archive/2009/05/30/1491921.html&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第三章 &lt;/strong&gt;&lt;strong&gt;搭建Service&lt;/strong&gt;&lt;strong&gt;框架（8&lt;/strong&gt;&lt;strong&gt;页）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;为第2章创建的Prism程序搭建Service，并完善项目结构。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong style="font-size: 18pt;"&gt;第二部分&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt; &lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;Prism&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;研究（&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;83&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;页）&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第四章 Unity&lt;/strong&gt;&lt;strong&gt;研究（预计10&lt;/strong&gt;&lt;strong&gt;页）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;附：MEF&lt;/strong&gt;&lt;strong&gt;框架&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第五章 Module&lt;/strong&gt;&lt;strong&gt;研究（17&lt;/strong&gt;&lt;strong&gt;页）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;包括Bootstarpper&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2009/07/13/1522168.html"&gt;http://www.cnblogs.com/Jax/archive/2009/07/13/1522168.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第六章 View Injection&lt;/strong&gt;&lt;strong&gt;和View Discovery(6&lt;/strong&gt;&lt;strong&gt;页)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2009/07/22/1528267.html"&gt;&lt;strong&gt;http://www.cnblogs.com/Jax/archive/2009/07/22/1528267.html&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第七章 View-first&lt;/strong&gt;&lt;strong&gt;和View-last&lt;/strong&gt;&lt;strong&gt;（预计10&lt;/strong&gt;&lt;strong&gt;页）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第八章 Event&lt;/strong&gt;&lt;strong&gt;机制(1o&lt;/strong&gt;&lt;strong&gt;页)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2009/07/22/1528296.html"&gt;&lt;strong&gt;http://www.cnblogs.com/Jax/archive/2009/07/22/1528296.html&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第九章 &lt;/strong&gt;&lt;strong&gt;探寻Command&lt;/strong&gt;&lt;strong&gt;（20&lt;/strong&gt;&lt;strong&gt;页）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2009/10/15/1583593.html"&gt;&lt;strong&gt;http://www.cnblogs.com/Jax/archive/2009/10/15/1583593.html&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第十章 Region&lt;/strong&gt;&lt;strong&gt;研究（预计10&lt;/strong&gt;&lt;strong&gt;页）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;及其Module&lt;/strong&gt;&lt;strong&gt;划分技巧&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong style="font-size: 18pt;"&gt;第三部分&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt; &lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;MVVM&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;分析（&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;71&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;页）&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第十一章 &lt;/strong&gt;&lt;strong&gt;白话MVP&lt;/strong&gt;&lt;strong&gt;（17&lt;/strong&gt;&lt;strong&gt;页）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2009/10/09/1579404.html"&gt;&lt;strong&gt;http://www.cnblogs.com/Jax/archive/2009/10/09/1579404.html&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第十二章 &lt;/strong&gt;&lt;strong&gt;从Event&lt;/strong&gt;&lt;strong&gt;折腾到Command&lt;/strong&gt;&lt;strong&gt;（15&lt;/strong&gt;&lt;strong&gt;页）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2009/10/10/1579961.html"&gt;&lt;strong&gt;http://www.cnblogs.com/Jax/archive/2009/10/10/1579961.html&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第十二章 AttachedBehavior&lt;/strong&gt;&lt;strong&gt;（15&lt;/strong&gt;&lt;strong&gt;页）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2009/10/12/1581109.html"&gt;&lt;strong&gt;http://www.cnblogs.com/Jax/archive/2009/10/12/1581109.html&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第十二章 &lt;/strong&gt;&lt;strong&gt;包氏波动思想（6&lt;/strong&gt;&lt;strong&gt;页）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2009/10/14/1582889.html"&gt;&lt;strong&gt;http://www.cnblogs.com/Jax/archive/2009/10/14/1582889.html&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第十三章 &lt;/strong&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2009/10/13/1582128.html"&gt;&lt;strong&gt;玩转&lt;/strong&gt;&lt;strong&gt;INotifyPropertyChanged&lt;/strong&gt;&lt;strong&gt;和&lt;/strong&gt;&lt;strong&gt;ObservableCollection&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;（18&lt;/strong&gt;&lt;strong&gt;页）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2009/10/13/1582128.html"&gt;&lt;strong&gt;http://www.cnblogs.com/Jax/archive/2009/10/13/1582128.html&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong style="font-size: 18pt;"&gt;第四部分&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt; &lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;Prism&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;案例研究（&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;70&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;页）&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第十三章 StockTrader RI&lt;/strong&gt;&lt;strong&gt;架构（20&lt;/strong&gt;&lt;strong&gt;页）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(一)&lt;/strong&gt;&lt;strong&gt;RI&lt;/strong&gt;&lt;strong&gt;简介&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(二)&lt;/strong&gt;&lt;strong&gt;RI&lt;/strong&gt;&lt;strong&gt;架构分析&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2009/07/13/1522184.html"&gt;&lt;strong&gt;http://www.cnblogs.com/Jax/archive/2009/07/13/1522184.html&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(三)&lt;/strong&gt;&lt;strong&gt;RI&lt;/strong&gt;&lt;strong&gt;主程序分析&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2009/07/13/1522190.html"&gt;&lt;strong&gt;http://www.cnblogs.com/Jax/archive/2009/07/13/1522190.html&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(四)&lt;/strong&gt;&lt;strong&gt;RI&lt;/strong&gt;&lt;strong&gt;中的数据关系&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2009/07/13/1522193.html"&gt;&lt;strong&gt;http://www.cnblogs.com/Jax/archive/2009/07/13/1522193.html&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第十四章 StockTrader RI&lt;/strong&gt;&lt;strong&gt;源码研究（预计50&lt;/strong&gt;&lt;strong&gt;页）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(1) &lt;/strong&gt;&lt;strong&gt;Market&lt;/strong&gt;&lt;strong&gt;模块之TrendLineView&lt;/strong&gt;&lt;strong&gt;分析&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2009/07/13/1522194.html"&gt;&lt;strong&gt;http://www.cnblogs.com/Jax/archive/2009/07/13/1522194.html&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(2) &lt;/strong&gt;&lt;strong&gt;News&lt;/strong&gt;&lt;strong&gt;模块之ArticleView&lt;/strong&gt;&lt;strong&gt;分析&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(3) &lt;/strong&gt;&lt;strong&gt;News&lt;/strong&gt;&lt;strong&gt;模块之NewsReader&lt;/strong&gt;&lt;strong&gt;分析&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(4) &lt;/strong&gt;&lt;strong&gt;Position&lt;/strong&gt;&lt;strong&gt;模块之OrderCommandsView&lt;/strong&gt;&lt;strong&gt;分析&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(5) &lt;/strong&gt;&lt;strong&gt;Position&lt;/strong&gt;&lt;strong&gt;模块之OrderCompositeView&lt;/strong&gt;&lt;strong&gt;分析&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(6) &lt;/strong&gt;&lt;strong&gt;Position&lt;/strong&gt;&lt;strong&gt;模块之OrderDetailsView&lt;/strong&gt;&lt;strong&gt;分析&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(7) &lt;/strong&gt;&lt;strong&gt;Position&lt;/strong&gt;&lt;strong&gt;模块之OrdersView&lt;/strong&gt;&lt;strong&gt;分析&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(8) &lt;/strong&gt;&lt;strong&gt;Position&lt;/strong&gt;&lt;strong&gt;模块之PositionPieChartView&lt;/strong&gt;&lt;strong&gt;分析&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(9) &lt;/strong&gt;&lt;strong&gt;Position&lt;/strong&gt;&lt;strong&gt;模块之PositionSummaryView&lt;/strong&gt;&lt;strong&gt;分析&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(10) &lt;/strong&gt;&lt;strong&gt;Watch&lt;/strong&gt;&lt;strong&gt;模块之WatchListView&lt;/strong&gt;&lt;strong&gt;分析&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(11) &lt;/strong&gt;&lt;strong&gt;Watch&lt;/strong&gt;&lt;strong&gt;模块之AddWatchView&lt;/strong&gt;&lt;strong&gt;分析&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(12) &lt;/strong&gt;&lt;strong&gt;总结：StockTrader RI&lt;/strong&gt;&lt;strong&gt;项目的成败&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong style="font-size: 18pt;"&gt;第五部分&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt; &lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;一些常用的&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;Pattern&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;（英文版的已经写好，预计&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;150&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;页）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第十五章 &lt;/strong&gt;&lt;strong&gt;框架扩展&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1. &lt;/strong&gt;&lt;strong&gt;Menu&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2. &lt;/strong&gt;&lt;strong&gt;Navigation Tree&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3. &lt;/strong&gt;&lt;strong&gt;BaseView and BaseViewModel, IView and IViewModel&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;4. &lt;/strong&gt;&lt;strong&gt;Onsite edit&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;5. &lt;/strong&gt;&lt;strong&gt;DomainCacheManager&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;6. &lt;/strong&gt;&lt;strong&gt;Processing Bar&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;7. &lt;/strong&gt;&lt;strong&gt;Command and extension&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;8. &lt;/strong&gt;&lt;strong&gt;Chain of Async methods&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;9. &lt;/strong&gt;&lt;strong&gt;Paging/Filter&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;10. &lt;/strong&gt;&lt;strong&gt;Log&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;11. &lt;/strong&gt;&lt;strong&gt;Popup mechanism&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;12. &lt;/strong&gt;&lt;strong&gt;Validation&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第十六章 &lt;/strong&gt;&lt;strong&gt;特定场景 &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(1) &lt;/strong&gt;&lt;strong&gt;Cascade navigate and close page&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(2) &lt;/strong&gt;&lt;strong&gt;SMC&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(3) &lt;/strong&gt;&lt;strong&gt;Upload/Download&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(4) &lt;/strong&gt;&lt;strong&gt;Concurrency&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(5) &lt;/strong&gt;&lt;strong&gt;Print&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(6) &lt;/strong&gt;&lt;strong&gt;Export&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第十七章 &lt;/strong&gt;&lt;strong&gt;员工管理系统&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(一)&lt;/strong&gt;&lt;strong&gt;需求分析&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(二)&lt;/strong&gt;&lt;strong&gt;不常见的Controller&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(三)&lt;/strong&gt;&lt;strong&gt;到底谁当家？父亲？儿子？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(四)&lt;/strong&gt;&lt;strong&gt;妙极，TabControl&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(五)&lt;/strong&gt;&lt;strong&gt;使用DependecvyProperty&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(六)&lt;/strong&gt;&lt;strong&gt;事件上挂的方法为什么执行2&lt;/strong&gt;&lt;strong&gt;次？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(七)&lt;/strong&gt;&lt;strong&gt;额~&lt;/strong&gt;&lt;strong&gt;内存泄漏！&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(八)&lt;/strong&gt;&lt;strong&gt;让资源尽快回收&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(九)&lt;/strong&gt;&lt;strong&gt;总结&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong style="font-size: 18pt;"&gt;第六部分&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt; &lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;单元测试（预计&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;30&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;页）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第十八章 Silverlight&lt;/strong&gt;&lt;strong&gt;单元测试&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1. &lt;/strong&gt;&lt;strong&gt;哪些方法需要进行单元测试？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2. &lt;/strong&gt;&lt;strong&gt;如何模拟异步回调方法&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3. &lt;/strong&gt;&lt;strong&gt;Mock&lt;/strong&gt;&lt;strong&gt;一些数据吧&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;4. &lt;/strong&gt;&lt;strong&gt;UTBase&lt;/strong&gt;&lt;strong&gt;类库，把不该测的提取出来&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;5. &lt;/strong&gt;&lt;strong&gt;先写Code&lt;/strong&gt;&lt;strong&gt;，还是先写UT&lt;/strong&gt;&lt;strong&gt;？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;6. &lt;/strong&gt;&lt;strong&gt;通过UT&lt;/strong&gt;&lt;strong&gt;，你的代码重构了吗？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;7. &lt;/strong&gt;&lt;strong&gt;总结：基于MVVM&lt;/strong&gt;&lt;strong&gt;的UT&lt;/strong&gt;&lt;strong&gt;准则&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong style="font-size: 18pt;"&gt;第六部分&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt; &lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;Silverlight&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;自动化测试（预计&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;30&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;页）&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第十九章 White&lt;/strong&gt;&lt;strong&gt;框架研究&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;附：Silverlight Inspector&lt;/strong&gt;&lt;strong&gt;工具&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第二十章 &lt;/strong&gt;&lt;strong&gt;基于员工管理系统的自动化测试&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(一)&lt;/strong&gt;&lt;strong&gt;制定AutomationId&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(二)&lt;/strong&gt;&lt;strong&gt;捕获不到的Popup&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(三)&lt;/strong&gt;&lt;strong&gt;第一个UIA&lt;/strong&gt;&lt;strong&gt;方法&amp;#8212;&amp;#8212;基于Button&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(四)&lt;/strong&gt;&lt;strong&gt;第一个UIA&lt;/strong&gt;&lt;strong&gt;方法&amp;#8212;&amp;#8212;基于CheckBox&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;(五) &lt;strong&gt;总结：测试人员也要会写code&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong style="font-size: 18pt;"&gt;第七部分&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt; Others&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;（预计&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;50&lt;/strong&gt;&lt;strong style="font-size: 18pt;"&gt;页）&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第二十一章 &lt;/strong&gt;&lt;strong&gt;程序员如何与美工合作&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(一)&lt;/strong&gt;&lt;strong&gt;需求分析&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(二)&lt;/strong&gt;&lt;strong&gt;简易版的UXFramework&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(三)&lt;/strong&gt;&lt;strong&gt;高级版的UXFramework&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(四)&lt;/strong&gt;&lt;strong&gt;总结&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;第二十二章 Prism&lt;/strong&gt;&lt;strong&gt;乱弹&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(一)&lt;/strong&gt;&lt;strong&gt;真的需要Prism&lt;/strong&gt;&lt;strong&gt;么？山寨版Prism&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(二)&lt;/strong&gt;&lt;strong&gt;MVVM&lt;/strong&gt;&lt;strong&gt;是万能的么？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(三)&lt;/strong&gt;&lt;strong&gt;Eat your own dog&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(四)&lt;/strong&gt;&lt;strong&gt;没事儿别瞎封装，Prism&lt;/strong&gt;&lt;strong&gt;其实很美&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(五)&lt;/strong&gt;&lt;strong&gt;阶段性测试〉单元测试？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;附录： &lt;/strong&gt;&lt;strong&gt;资源汇总&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(一)&lt;/strong&gt;&lt;strong&gt;Blog&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(二)&lt;/strong&gt;&lt;strong&gt;论坛&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;(三)&lt;/strong&gt;&lt;strong&gt;开源项目&lt;/strong&gt;&lt;/p&gt; &lt;img src="http://www.cnblogs.com/Jax/aggbug/2217319.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2011/10/19/2217319.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Jax/archive/2011/08/09/2133065.html</id><title type="text">初探798</title><summary type="text">在这之前，我做了很多准备工作，包括买了几本介绍798的书籍，浏览了798的官方网站，甚至，还留起了小胡子冒充艺术家，但就在走进去的那一刹那，我还是被深深的surprise了。厌倦了南锣鼓巷的狭小拥挤并且千篇一律，迷惘于簋街的餐馆林立却如出一辙，所以，我曾经认为798也不过尔尔，所以，虽然它就位于微软左近，这一年多来，我却从来没有去过。打车到酒仙桥，这里有2个入口，一般大家会选择从2号口直接进入繁华区，另一个4号口则门可罗雀身世冷清。我逛街一向喜欢去清静的地方，所以选择了4号口，以下是798全景图： 右边那张图则是我这次逛798的路线图，事后发现，走了很多冤枉路，尤其是浪费了很多时间在一些小店里</summary><published>2011-08-09T14:35:00Z</published><updated>2011-08-09T14:35:00Z</updated><author><name>Jianqiang Bao</name><uri>http://www.cnblogs.com/Jax/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Jax/archive/2011/08/09/2133065.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Jax/archive/2011/08/09/2133065.html"/><content type="html">&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;在这之前，我做了很多准备工作，包括买了几本介绍798的书籍，浏览了798的官方网站，甚至，还留起了小胡子冒充艺术家，但就在走进去的那一刹那，我还是被深深的surprise了。厌倦了南锣鼓巷的狭小拥挤并且千篇一律，迷惘于簋街的餐馆林立却如出一辙，所以，我曾经认为798也不过尔尔，所以，虽然它就位于微软左近，这一年多来，我却从来没有去过。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;打车到酒仙桥，这里有2个入口，一般大家会选择从2号口直接进入繁华区，另一个4号口则门可罗雀身世冷清。我逛街一向喜欢去清静的地方，所以选择了4号口，以下是798全景图：&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092345324283.png"&gt;&lt;img border="0" alt="map" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092346012914.png" width="347" height="555" /&gt;&lt;/a&gt; &lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092346171546.png"&gt;&lt;img border="0" alt="map2" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092346395821.png" width="347" height="556" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;右边那张图则是我这次逛798的路线图，事后发现，走了很多冤枉路，尤其是浪费了很多时间在一些小店里，而耽误了行程，还是有20%的店面没有逛到。&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;无论是2号口还是4号口，都有这个显著的标志&amp;#8212;&amp;#8212;其实，这些条条框框的分界线，正是制约艺术的枷锁，艺术是无界限的，当然，我也是事后才感受到这扇铁门是多么的形式主义:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092346445293.jpg"&gt;&lt;img border="0" alt="WP_000618" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092346461540.jpg" width="341" height="257" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;路边随处可见的宣传标语：&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110809234648927.jpg"&gt;&lt;img border="0" alt="WP_000620" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092346491143.jpg" width="343" height="259" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;路边到处都是现场素描写真的&amp;#8220;艺术家&amp;#8221;，50元一位，水平层次不齐（这里缺一张照片），我逛了一天，见到最好的是位于罐子书屋边上的那个，夕阳夕照，一边是一个披头士在那里自娱自乐，旁边一个小女孩儿坐在板凳上摆着pose，而对面是一个一脸风霜的老艺人在画纸上一丝不苟的勾描着对方的脸廓。&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;沿着七星西街走，分别经过陶瓷一街、二街、三街，刚开始会觉得比较无聊，因为名气大的店铺和画廊都不在这边，显得比较冷清，这里我miss了第五元素画廊和利比里亚当代艺术中心&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;程昕东的国际当代艺术中心&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092346539319.jpg"&gt;&lt;img border="0" alt="WP_000629" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092346569578.jpg" width="374" height="282" /&gt;&lt;/a&gt; &lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092347017654.jpg"&gt;&lt;img border="0" alt="WP_000623" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110809234702869.jpg" width="378" height="284" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;下面这些雕塑位于程昕东家门口：&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092347064900.jpg"&gt;&lt;img border="0" alt="WP_000626" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092347082194.jpg" width="404" height="304" /&gt;&lt;/a&gt; &lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092347122387.jpg"&gt;&lt;img border="0" alt="WP_000624" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092347136366.jpg" width="404" height="304" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;走到尽头是赵半狄的熊猫屋，这是中国唯一一位至始至终以熊猫作为全部艺术线索的艺术家，非常有个性的人：&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092347168511.jpg"&gt;&lt;img border="0" alt="WP_000640" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092347186154.jpg" width="405" height="305" /&gt;&lt;/a&gt; &lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092347222377.jpg"&gt;&lt;img border="0" alt="WP_000641" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092347241623.jpg" width="406" height="306" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;有一条厂房国道上全都是画廊，但是每个都不大，统称为&amp;#8220;料阁子&amp;#8221;。下面这只&amp;#8220;巨拳&amp;#8221;的雕塑，就位于料阁子的门口。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092347289831.jpg"&gt;&lt;img border="0" alt="WP_000630" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092347298553.jpg" width="399" height="300" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;下面这家店，叫做&amp;#8220;一棹空间&amp;#8221;，是以买六七十年代的搪瓷杯而著称的，门口的巨大搪瓷杯就是很好的广告：&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092347337285.jpg"&gt;&lt;img border="0" alt="WP_000671" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092347354927.jpg" width="371" height="279" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092347388708.jpg"&gt;&lt;img border="0" alt="WP_000670" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092347404889.jpg" width="283" height="376" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;下面这家服装店，名为&amp;#8220;凡轩鸣一&amp;#8221;，是根据墙上的四句诗的第一个字合在一起取的名字。区别于其它服装店都位于一街之隔的闹市区，这里有难得的宁静，整个店铺有脱凡超俗的境界。她的服装走的是简洁路线，喜欢逛街的女生不能错过。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092347446129.jpg"&gt;&lt;img border="0" alt="WP_000642" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092347483540.jpg" width="332" height="440" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092347523634.jpg"&gt;&lt;img border="0" alt="WP_000643" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092347552814.jpg" width="515" height="387" /&gt;&lt;/a&gt; &lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092347575332.jpg"&gt;&lt;img border="0" alt="WP_000644" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092347587991.jpg" width="291" height="387" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;798最有名的饭馆是&amp;#8220;天下盐&amp;#8221;，中午在这里品尝了传说中的&amp;#8220;王献之排骨&amp;#8221;，之所以这么叫，是因为王献之非常清瘦，天生一副排骨身材。话说，从来没见过排骨挂在架子上的。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348022229.jpg"&gt;&lt;img border="0" alt="WP_000631" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348042347.jpg" width="400" height="301" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348073653.jpg"&gt;&lt;img border="0" alt="WP_000638" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110809234809456.jpg" width="408" height="307" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348122667.jpg"&gt;&lt;img border="0" alt="WP_000637" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348148848.jpg" width="312" height="414" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348175694.jpg"&gt;&lt;img border="0" alt="WP_000633" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348188037.jpg" width="408" height="307" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;要说798最早的画廊，首推东京画廊，正是她于02年在798展出《北京浮世绘》，成功吸引了大小三四十家画廊进驻798。此外，这家画廊和798的教父级人物黄锐有莫大关系。&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348221610.jpg"&gt;&lt;img border="0" alt="WP_000645" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348235349.jpg" width="383" height="288" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348268149.jpg"&gt;&lt;img border="0" alt="WP_000646" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348279130.jpg" width="382" height="288" /&gt;&lt;/a&gt; &lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/2011080923482878.jpg"&gt;&lt;img border="0" alt="WP_000647" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348295867.jpg" width="219" height="291" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;东京画廊门口的巨型雕塑：&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101708587713.jpg"&gt;&lt;img border="0" alt="WP_000726" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101709055350.jpg" width="296" height="394" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;东京画廊门口那幅夺人眼球的艺术作品：日光之下&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101709414519.jpg"&gt;&lt;img border="0" alt="WP_000729" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101709481873.jpg" width="442" height="332" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;798艺术区的另一位教父是摄影家徐勇，正是他和黄锐，连续举办三届798艺术节，吸引了国内外的关注，才使得798艺术区声名鹊起&amp;#8212;&amp;#8212;要知道798这块地几年前差点被拆掉做电子城。所以，来798，就不能不参观徐勇创建的&amp;#8220;时态空间&amp;#8221;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348312539.jpg"&gt;&lt;img border="0" alt="WP_000651" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110809234832488.jpg" width="347" height="261" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;我这次参观时态空间，这赶上徐勇展出他的两部作品，下面这个作品名为&amp;#8220;这张脸&amp;#8221;，用来展现一个妓女工作一天的不同时刻的将近500张面孔。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348344750.jpg"&gt;&lt;img border="0" alt="WP_000648" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348356320.jpg" width="337" height="254" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348367550.jpg"&gt;&lt;img border="0" alt="WP_000652" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348371944.jpg" width="337" height="254" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348392236.jpg"&gt;&lt;img border="0" alt="WP_000653" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348403774.jpg" width="336" height="253" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348437380.jpg"&gt;&lt;img border="0" alt="WP_000655" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348447804.jpg" width="339" height="255" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;而另一部摄影作品，名为《解决方案》，不想自己的博客因为转载这些图片而被封杀，仅提供地址如下：&lt;a href="http://chenzhiyong.blshe.com/post/1347/74881"&gt;&lt;font color="#005eac"&gt;http://chenzhiyong.blshe.com/post/1347/74881&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;时态空间的后门，是徐勇开的一家咖啡店，名为&amp;#8220;老工厂&amp;#8221;，有幸的话，经常会遇到一些艺术家在这里闲聊。我在里面体验了一杯苹果汁，感觉环境非常优雅，是个喝下午茶的好地方。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110809234849374.jpg"&gt;&lt;img border="0" alt="WP_000656" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110809234850524.jpg" width="349" height="263" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348553127.jpg"&gt;&lt;img border="0" alt="WP_000663" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348565503.jpg" width="353" height="266" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092348598204.jpg"&gt;&lt;img border="0" alt="WP_000658" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092349009152.jpg" width="357" height="269" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;又转回了&amp;#8220;天下盐&amp;#8221;，这条街上都是吃吃喝喝的地方：&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092349028921.jpg"&gt;&lt;img border="0" alt="WP_000679" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110809234904184.jpg" width="271" height="360" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Cave Cafe&amp;#8212;&amp;#8212;中文名为&amp;#8220;洞房咖啡&amp;#8221;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092349085262.jpg"&gt;&lt;img border="0" alt="WP_000665" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110809234910604.jpg" width="379" height="285" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;At Cafe&amp;#8212;&amp;#8212;中文名为&amp;#8220;爱特咖啡&amp;#8221;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101241171356.jpg"&gt;&lt;img border="0" alt="WP_000677" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101241209946.jpg" width="400" height="302" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101241466791.jpg"&gt;&lt;img border="0" alt="WP_000678" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101241568832.jpg" width="405" height="304" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Switch Cafe，位于尤伦斯后门&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101245322569.jpg"&gt;&lt;img border="0" alt="WP_000700" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101245452262.jpg" width="391" height="294" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;路边的雕塑，这只拿大顶的兔子很可爱：&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092349141636.jpg"&gt;&lt;img border="0" alt="WP_000664" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108092349159519.jpg" width="278" height="370" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;三度半艺术空间&amp;#8212;&amp;#8212;油画展览&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101246048852.jpg"&gt;&lt;img border="0" alt="WP_000676" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101246471886.jpg" width="424" height="319" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;尤伦斯门口的恐龙雕像：&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101247047006.jpg"&gt;&lt;img border="0" alt="WP_000694" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101248523280.jpg" width="303" height="403" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;终于来到了尤伦斯当代艺术中心（UCCA）&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101250598936.jpg"&gt;&lt;img border="0" alt="WP_000695" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101251041506.jpg" width="303" height="403" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101254472772.jpg"&gt;&lt;img border="0" alt="WP_000697" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101254531032.jpg" width="412" height="310" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101255274118.jpg"&gt;&lt;img border="0" alt="WP_000698" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110810125532525.jpg" width="414" height="312" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101255488874.jpg"&gt;&lt;img border="0" alt="WP_000701" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101256071844.jpg" width="418" height="314" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;作品《我所有的锐气源于你的坚硬》&amp;#8212;&amp;#8212;整个影片长达30分钟，就一个画面，一双美腿，一对冰刀，坐在运动的车上，脚搭在地上，不停的磨着那对冰刀，直到影片结束，原本粗钝的冰刀变得锋利。不解释，一千个读者心中有一千个哈姆雷特。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101256311809.jpg"&gt;&lt;img border="0" alt="787_G_1311560277295" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101256511823.jpg" width="424" height="238" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;由80年代的大衣橱围成一个封闭圈子。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101256589178.jpg"&gt;&lt;img border="0" alt="WP_000704" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101257357200.jpg" width="423" height="318" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;由木床组成的迷宫，主题为&amp;#8220;穷人的智慧&amp;#8221;，蚁居的前身。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101301408107.jpg"&gt;&lt;img border="0" alt="WP_000724" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101303208097.jpg" width="427" height="321" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;西门子制造，线路控制器，历史悠久。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110810131959300.jpg"&gt;&lt;img border="0" alt="WP_000705" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101320462905.jpg" width="345" height="459" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;大型壁画，整整一面墙。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110810132116258.jpg"&gt;&lt;img border="0" alt="WP_000707" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101321468725.jpg" width="323" height="429" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;那个年代的各种肥皂&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101323265825.jpg"&gt;&lt;img border="0" alt="WP_000709" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101323382029.jpg" width="381" height="287" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;尤伦斯是在798工厂中最大的一个窑炉上修建的&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101712005115.jpg"&gt;&lt;img border="0" alt="WP_000710" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101712043224.jpg" width="379" height="285" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110810171220112.jpg"&gt;&lt;img border="0" alt="WP_000711" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101714483065.jpg" width="390" height="518" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;光与影的组合&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101715156779.jpg"&gt;&lt;img border="0" alt="WP_000713" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101715461874.jpg" width="284" height="377" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;数字的玄妙&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101716392107.jpg"&gt;&lt;img border="0" alt="WP_000715" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101717009829.jpg" width="391" height="294" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101717035977.jpg"&gt;&lt;img border="0" alt="WP_000720" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101717092318.jpg" width="396" height="298" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101717187423.jpg"&gt;&lt;img border="0" alt="WP_000721" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101717377295.jpg" width="402" height="302" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;数字长廊&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101722004990.jpg"&gt;&lt;img border="0" alt="WP_000722" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101722174843.jpg" width="406" height="306" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;意犹未尽。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101722507755.jpg"&gt;&lt;img border="0" alt="WP_000668" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101723329361.jpg" width="410" height="308" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;路边各具特色的小店：&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101725477223.jpg"&gt;&lt;img border="0" alt="WP_000667" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101725506054.jpg" width="317" height="421" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;艺术家蔡锦的纸上作品展：&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110120138481.jpg"&gt;&lt;img border="0" alt="WP_000675" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110120153332.jpg" width="371" height="277" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110120171149.jpg"&gt;&lt;img border="0" alt="WP_000674" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110120186590.jpg" width="375" height="283" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110120207787.jpg"&gt;&lt;img border="0" alt="WP_000673" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110120217373.jpg" width="379" height="283" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;西门子艺术空间，正在展出《一念之差》&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110120237457.jpg"&gt;&lt;img border="0" alt="WP_000739" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110120245896.jpg" width="486" height="364" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110120261828.jpg"&gt;&lt;img border="0" alt="WP_000740" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110120273124.jpg" width="294" height="391" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;三木国际艺术，正在展出《错在苹果》，都知道啥意思吧&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110120312695.jpg"&gt;&lt;img border="0" alt="WP_000749" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110120342398.jpg" width="510" height="385" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110120374543.jpg"&gt;&lt;img border="0" alt="WP_000741" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110120393199.jpg" width="514" height="387" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110811012042950.jpg"&gt;&lt;img border="0" alt="WP_000742" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110120446258.jpg" width="520" height="393" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110120467697.jpg"&gt;&lt;img border="0" alt="WP_000743" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110120485306.jpg" width="333" height="443" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110120507333.jpg"&gt;&lt;img border="0" alt="WP_000744" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110120512533.jpg" width="338" height="449" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110120528465.jpg"&gt;&lt;img border="0" alt="WP_000745" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110120543839.jpg" width="342" height="455" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110811012057478.jpg"&gt;&lt;img border="0" alt="WP_000746" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110120598884.jpg" width="447" height="336" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110121024966.jpg"&gt;&lt;img border="0" alt="WP_000747" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110811012104831.jpg" width="454" height="342" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110121084829.jpg"&gt;&lt;img border="0" alt="WP_000748" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110121132971.jpg" width="458" height="344" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;终于走到了最繁华的地段，这个是标志：&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101735014003.jpg"&gt;&lt;img border="0" alt="WP_000768" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108101735108552.jpg" width="444" height="334" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;原色生活，位于闹市区的手工陶艺店，798最好的两家陶艺店之一，不可不去&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110121167907.jpg"&gt;&lt;img border="0" alt="WP_000681" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110811012119674.jpg" width="452" height="338" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110121222296.jpg"&gt;&lt;img border="0" alt="WP_000686" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110121234639.jpg" width="464" height="349" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110121261834.jpg"&gt;&lt;img border="0" alt="WP_000683" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110121285257.jpg" width="468" height="350" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110121303663.jpg"&gt;&lt;img border="0" alt="WP_000684" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110121317402.jpg" width="331" height="443" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110121343201.jpg"&gt;&lt;img border="0" alt="WP_000685" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110121364955.jpg" width="480" height="361" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;西街路边的雕像群：&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110121397722.jpg"&gt;&lt;img border="0" alt="WP_000771" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110121411395.jpg" width="315" height="417" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110121442701.jpg"&gt;&lt;img border="0" alt="WP_000769" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110811012146800.jpg" width="325" height="430" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110121499980.jpg"&gt;&lt;img border="0" alt="WP_000770" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110121518320.jpg" width="328" height="436" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;798的西街，很像复旦的南区步行街，很有调调。。。有调调。。。有调。。。调。。。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110121543563.jpg"&gt;&lt;img border="0" alt="WP_000772" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110121587070.jpg" width="331" height="442" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110122027198.jpg"&gt;&lt;img border="0" alt="WP_000773" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110811012204870.jpg" width="430" height="324" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110122083015.jpg"&gt;&lt;img border="0" alt="WP_000774" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110122119272.jpg" width="344" height="455" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110122151351.jpg"&gt;&lt;img border="0" alt="WP_000775" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110122171643.jpg" width="447" height="334" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110122195348.jpg"&gt;&lt;img border="0" alt="WP_000780" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110122219610.jpg" width="344" height="458" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110122241788.jpg"&gt;&lt;img border="0" alt="WP_000781" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110811012226751.jpg" width="438" height="330" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;连买零食的店铺都这么有味道：&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110122303636.jpg"&gt;&lt;img border="0" alt="WP_000782" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110122339959.jpg" width="443" height="334" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;怡然农场门前的艺术品&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110122372976.jpg"&gt;&lt;img border="0" alt="WP_000783" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110122392396.jpg" width="342" height="452" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110122432033.jpg"&gt;&lt;img border="0" alt="WP_000785" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110122443787.jpg" width="426" height="320" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110122479967.jpg"&gt;&lt;img border="0" alt="WP_000786" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110122495833.jpg" width="344" height="460" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;艺生活的院子&amp;#8212;&amp;#8212;李宗盛的手工吉他&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110122528501.jpg"&gt;&lt;img border="0" alt="WP_000787" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110122557713.jpg" width="461" height="346" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110811012258905.jpg"&gt;&lt;img border="0" alt="WP_000788" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110123018166.jpg" width="465" height="350" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110123043102.jpg"&gt;&lt;img border="0" alt="WP_000789" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/2011081101230647.jpg" width="472" height="355" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;轰动一时的长征画馆和长征食堂&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110123102540.jpg"&gt;&lt;img border="0" alt="WP_000790" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110123123422.jpg" width="476" height="356" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/2011081101231527.jpg"&gt;&lt;img border="0" alt="WP_000794" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110123176972.jpg" width="481" height="362" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110123193153.jpg"&gt;&lt;img border="0" alt="WP_000795" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110123214940.jpg" width="487" height="366" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110123245133.jpg"&gt;&lt;img border="0" alt="WP_000796" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110123263506.jpg" width="491" height="369" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110123285817.jpg"&gt;&lt;img border="0" alt="WP_000798" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110123317504.jpg" width="368" height="490" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110123345995.jpg"&gt;&lt;img border="0" alt="WP_000799" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110123379352.jpg" width="489" height="368" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110123399960.jpg"&gt;&lt;img border="0" alt="WP_000800" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110123413873.jpg" width="347" height="461" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110123437579.jpg"&gt;&lt;img border="0" alt="WP_000802" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110123456509.jpg" width="350" height="466" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110123481544.jpg"&gt;&lt;img border="0" alt="WP_000803" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110123512883.jpg" width="354" height="470" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110123532652.jpg"&gt;&lt;img border="0" alt="WP_000804" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110123557404.jpg" width="360" height="479" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110123586550.jpg"&gt;&lt;img border="0" alt="WP_000805" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110124003844.jpg" width="491" height="369" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;下面这家店隆重推荐，陶艺馆，798乃至北京最有创意的陶艺店铺&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110124012840.jpg"&gt;&lt;img border="0" alt="WP_000806" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110124024136.jpg" width="301" height="398" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110124045051.jpg"&gt;&lt;img border="0" alt="WP_000807" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110124054919.jpg" width="306" height="406" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110124095951.jpg"&gt;&lt;img border="0" alt="WP_000809" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110124112132.jpg" width="488" height="367" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110124159718.jpg"&gt;&lt;img border="0" alt="WP_000811" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110124187469.jpg" width="494" height="373" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110124214140.jpg"&gt;&lt;img border="0" alt="WP_000813" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110811012423495.jpg" width="496" height="373" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;非空间，著名艺术家林菁的设计空间，可惜的是，大部分设计品都已经搬到她的另一个店铺了，留在798的只是一个空架子&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110811013534923.jpg"&gt;&lt;img border="0" alt="WP_000829" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/2011081101353770.jpg" width="493" height="371" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110135405313.jpg"&gt;&lt;img border="0" alt="WP_000830" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/2011081101354298.jpg" width="504" height="379" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110811013546815.jpg"&gt;&lt;img border="0" alt="WP_000831" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110135482502.jpg" width="508" height="382" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;满世界寻找&amp;#8220;姜茶&amp;#8221;，很有名的服装设计店。因为承受不起798昂贵的租金，这家店已经搬走，原先的地方改头换面，搬进来了&amp;#8220;团团团子&amp;#8221;，专门卖熊文韵设计的卡通形象&amp;#8220;空空&amp;#8221;。店中循环播放动画片，漫画、玩偶应有尽有，便有一番风味。有兴趣可以访问它的网站：&lt;a href="http://blog.sina.com.cn/u/1625913072"&gt;&lt;font color="#005eac"&gt;http://blog.sina.com.cn/u/1625913072&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110135523501.jpg"&gt;&lt;img border="0" alt="WP_000821" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110135552332.jpg" width="373" height="499" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110136005217.jpg"&gt;&lt;img border="0" alt="WP_000820" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110136029380.jpg" width="484" height="362" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;仍然是路边的雕塑：&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110136068178.jpg"&gt;&lt;img border="0" alt="WP_000832" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110136098404.jpg" width="347" height="463" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110136128074.jpg"&gt;&lt;img border="0" alt="WP_000815" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110136154712.jpg" width="352" height="468" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110136171940.jpg"&gt;&lt;img border="0" alt="WP_000823" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110136209724.jpg" width="352" height="468" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110136245673.jpg"&gt;&lt;img border="0" alt="WP_000824" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110811013628294.jpg" width="588" height="442" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;包豪斯广场&amp;#8212;&amp;#8212;一群艺校的孩纸在那里show街舞&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110136311849.jpg"&gt;&lt;img border="0" alt="WP_000689" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110136357582.jpg" width="585" height="440" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;广场周边的一些店铺和画廊：&lt;/p&gt;&lt;br /&gt;&lt;p&gt;前卫艺术&amp;#8212;&amp;#8212;反正我进去是没看懂里面的抽象派&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150131270.jpg"&gt;&lt;img border="0" alt="WP_000690" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150151355.jpg" width="468" height="352" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;百年印象&amp;#8212;&amp;#8212;这家店也是798的教父徐勇和别人一起开的，后来因为观念不合而分道扬镳&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110811015019926.jpg"&gt;&lt;img border="0" alt="WP_000692" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150226725.jpg" width="471" height="355" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;专卖颜料的贝碧欧&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150241477.jpg"&gt;&lt;img border="0" alt="WP_000727" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150276753.jpg" width="369" height="491" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150305027.jpg"&gt;&lt;img border="0" alt="WP_000728" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150328700.jpg" width="518" height="389" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;彼得潘达达&amp;#8212;&amp;#8212;这家艺术馆进不去，要事先预约的&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110811015035911.jpg"&gt;&lt;img border="0" alt="WP_000750" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150372108.jpg" width="518" height="390" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;无界&amp;#8212;&amp;#8212;商品店，最喜欢里面的国际象棋，所有的棋子都是Q版的，360一副还是蛮贵的。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150417186.jpg"&gt;&lt;img border="0" alt="WP_000751" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150452886.jpg" width="521" height="392" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150509849.jpg"&gt;&lt;img border="0" alt="WP_000756" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150572993.jpg" width="528" height="397" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;黛格&amp;#8212;&amp;#8212;这是一家婚纱摄影工作室&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151021103.jpg"&gt;&lt;img border="0" alt="WP_000752" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151042823.jpg" width="452" height="341" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151076953.jpg"&gt;&lt;img border="0" alt="WP_000753" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151092295.jpg" width="458" height="344" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151107146.jpg"&gt;&lt;img border="0" alt="WP_000754" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151115063.jpg" width="323" height="429" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;第五元素画廊&amp;#8212;&amp;#8212;这家我不甚了解，详情参见网站：&lt;a href="http://www.artnow.com.cn/CommonPage/ArtOrgDetail.aspx?ChannelID=330&amp;amp;OrganizationId=603"&gt;&lt;font color="#005eac"&gt;http://www.artnow.com.cn/CommonPage/ArtOrgDetail.aspx?ChannelID=330&amp;amp;OrganizationId=603&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151144765.jpg"&gt;&lt;img border="0" alt="WP_000757" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151164600.jpg" width="434" height="327" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;守候动漫&amp;#8212;&amp;#8212;这家店偏阴柔，卖的都是小姑娘喜欢的背包、手机套。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151189353.jpg"&gt;&lt;img border="0" alt="WP_000759" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151208108.jpg" width="478" height="358" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151222021.jpg"&gt;&lt;img border="0" alt="WP_000760" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151239348.jpg" width="309" height="408" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/2011081101512797.jpg"&gt;&lt;img border="0" alt="WP_000762" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151295198.jpg" width="466" height="350" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151314901.jpg"&gt;&lt;img border="0" alt="WP_000764" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151334387.jpg" width="468" height="352" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151373468.jpg"&gt;&lt;img border="0" alt="WP_000765" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151391285.jpg" width="472" height="355" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151437824.jpg"&gt;&lt;img border="0" alt="WP_000763" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151453415.jpg" width="472" height="355" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151489280.jpg"&gt;&lt;img border="0" alt="WP_000766" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110811015149228.jpg" width="484" height="362" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;最经典的艺术品，莫过于这幅&amp;#8220;漂流瓶中的女人&amp;#8221;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151507031.jpg"&gt;&lt;img border="0" alt="WP_000767" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151524914.jpg" width="369" height="491" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;广场周边的一些店铺和画廊：&lt;/p&gt;&lt;br /&gt;&lt;p&gt;前卫艺术&amp;#8212;&amp;#8212;反正我进去是没看懂里面的抽象派&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150131270.jpg"&gt;&lt;img border="0" alt="WP_000690" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150151355.jpg" width="468" height="352" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;百年印象&amp;#8212;&amp;#8212;这家店也是798的教父徐勇和别人一起开的，后来因为观念不合而分道扬镳&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110811015019926.jpg"&gt;&lt;img border="0" alt="WP_000692" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150226725.jpg" width="471" height="355" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;专卖颜料的贝碧欧&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150241477.jpg"&gt;&lt;img border="0" alt="WP_000727" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150276753.jpg" width="369" height="491" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150305027.jpg"&gt;&lt;img border="0" alt="WP_000728" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150328700.jpg" width="518" height="389" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;彼得潘达达&amp;#8212;&amp;#8212;这家艺术馆进不去，要事先预约的&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110811015035911.jpg"&gt;&lt;img border="0" alt="WP_000750" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150372108.jpg" width="518" height="390" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;无界&amp;#8212;&amp;#8212;商品店，最喜欢里面的国际象棋，所有的棋子都是Q版的，360一副还是蛮贵的。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150417186.jpg"&gt;&lt;img border="0" alt="WP_000751" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150452886.jpg" width="521" height="392" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150509849.jpg"&gt;&lt;img border="0" alt="WP_000756" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110150572993.jpg" width="528" height="397" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;黛格&amp;#8212;&amp;#8212;这是一家婚纱摄影工作室&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151021103.jpg"&gt;&lt;img border="0" alt="WP_000752" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151042823.jpg" width="452" height="341" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151076953.jpg"&gt;&lt;img border="0" alt="WP_000753" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151092295.jpg" width="458" height="344" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151107146.jpg"&gt;&lt;img border="0" alt="WP_000754" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151115063.jpg" width="323" height="429" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;第五元素画廊&amp;#8212;&amp;#8212;这家我不甚了解，详情参见网站：&lt;a href="http://www.artnow.com.cn/CommonPage/ArtOrgDetail.aspx?ChannelID=330&amp;amp;OrganizationId=603"&gt;&lt;font color="#005eac"&gt;http://www.artnow.com.cn/CommonPage/ArtOrgDetail.aspx?ChannelID=330&amp;amp;OrganizationId=603&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151144765.jpg"&gt;&lt;img border="0" alt="WP_000757" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151164600.jpg" width="434" height="327" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;守候动漫&amp;#8212;&amp;#8212;这家店偏阴柔，卖的都是小姑娘喜欢的背包、手机套。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151189353.jpg"&gt;&lt;img border="0" alt="WP_000759" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151208108.jpg" width="478" height="358" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151222021.jpg"&gt;&lt;img border="0" alt="WP_000760" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151239348.jpg" width="309" height="408" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/2011081101512797.jpg"&gt;&lt;img border="0" alt="WP_000762" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151295198.jpg" width="466" height="350" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151314901.jpg"&gt;&lt;img border="0" alt="WP_000764" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151334387.jpg" width="468" height="352" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151373468.jpg"&gt;&lt;img border="0" alt="WP_000765" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151391285.jpg" width="472" height="355" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151437824.jpg"&gt;&lt;img border="0" alt="WP_000763" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151453415.jpg" width="472" height="355" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151489280.jpg"&gt;&lt;img border="0" alt="WP_000766" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110811015149228.jpg" width="484" height="362" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;最经典的艺术品，莫过于这幅&amp;#8220;漂流瓶中的女人&amp;#8221;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151507031.jpg"&gt;&lt;img border="0" alt="WP_000767" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110151524914.jpg" width="369" height="491" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;进入到798中街看到的画廊和店铺：&lt;/p&gt;&lt;br /&gt;&lt;p&gt;红星画廊&amp;#8212;&amp;#8212;不大，也不是很出名，可以参考一下这个网址，了解它举办过什么画展：&lt;a href="http://blog.sina.com.cn/s/blog_4a12e31001009u3f.html"&gt;&lt;font color="#005eac"&gt;http://blog.sina.com.cn/s/blog_4a12e31001009u3f.html&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110247123784.jpg"&gt;&lt;img border="0" alt="WP_000817" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110247145505.jpg" width="455" height="343" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;百雅轩&amp;#8212;&amp;#8212;很大的一个画廊，里面的服务员so漂亮，抱歉，我又做与艺术背道而驰的事情了。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110247181205.jpg"&gt;&lt;img border="0" alt="WP_000818" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110247214745.jpg" width="455" height="343" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;名潮艺术空间，这次展出的是人体艺术油画&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110247268743.jpg"&gt;&lt;img border="0" alt="WP_000827" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110247295381.jpg" width="454" height="342" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110247329196.jpg"&gt;&lt;img border="0" alt="WP_000826" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110811024733982.jpg" width="453" height="341" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;第零空间&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110247351930.jpg"&gt;&lt;img border="0" alt="WP_000828" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110247361798.jpg" width="330" height="438" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;银殊&amp;#8212;&amp;#8212;798的小资最高境界。设计并销售各种自制的银饰品，格调非常高雅。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110247386550.jpg"&gt;&lt;img border="0" alt="WP_000835" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110247402797.jpg" width="527" height="396" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110247413745.jpg"&gt;&lt;img border="0" alt="WP_000834" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110247439435.jpg" width="407" height="542" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110247451430.jpg"&gt;&lt;img border="0" alt="WP_000836" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110247467677.jpg" width="326" height="433" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;丹宁工房&amp;#8212;&amp;#8212;额菲尔的直营店，据说上过电视。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110247481906.jpg"&gt;&lt;img border="0" alt="WP_000837" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110247517115.jpg" width="456" height="607" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Love in The Sky&amp;#8212;&amp;#8212;爱在天空下体验店，经营各种玩偶&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110247557799.jpg"&gt;&lt;img border="0" alt="WP_000839" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110247588407.jpg" width="455" height="342" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;商舒&amp;#8212;&amp;#8212;店主的名字。经营自己设计的服装，798最有特色的13个店铺之一&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110248024074.jpg"&gt;&lt;img border="0" alt="WP_000841" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110248049350.jpg" width="464" height="349" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;当代唐人艺术中心&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110248079925.jpg"&gt;&lt;img border="0" alt="WP_000846" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110248097742.jpg" width="479" height="360" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110811024812999.jpg"&gt;&lt;img border="0" alt="WP_000847" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110811024814245.jpg" width="486" height="365" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;熊猫慢递&amp;#8212;&amp;#8212;798最有趣的一个创意店。你可以写一封信，然后请这家店保存1-2年（当然要花钱的，而且很贵），然后在指定的时间寄出去。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110248187307.jpg"&gt;&lt;img border="0" alt="WP_000848" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/20110811024822881.jpg" width="493" height="371" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;手机没电前拍的最后一张照片。红典轩，纯手工丝织品，各种丝织玩偶、丝织陶器。也许店主精于设计而不善于经营，所有店铺搬家，面积越来越小，我费了好大力气才找到。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110248276906.jpg"&gt;&lt;img border="0" alt="WP_000849" src="http://images.cnblogs.com/cnblogs_com/Jax/201108/201108110248302465.jpg" width="497" height="374" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;遗憾的是，手机没电了。路过了798火车站，参观了那个火车头，最后走进罗伯特开的东8时区艺术书店，就是这个美国人把798介绍给世界的。此外，还看了路边很有趣的一些雕塑，可惜都没拍下来。&lt;/p&gt;&lt;p&gt;整个游览从11点半进入园区，到晚上7点半走出园区，共经历8个小时，拍下200余张照片。&lt;/p&gt;&lt;p&gt;后记：历时三天，把这些图片和所见所闻整理到这篇文章中。接下来，我会写一点798的历史、名人，以及八卦。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Jax/aggbug/2133065.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2011/08/09/2133065.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Jax/archive/2011/03/20/1989286.html</id><title type="text">Team Build Workflow 资源汇总</title><summary type="text">官方论坛：Build Automation ForumTeam Foundation Server 2010 SDK各种文章：Extending Team Foundation使用 MSBuild 和 Windows Installer XML 执行自动发布MSBuild的深入认识自动构造--MSBuild和Team Foundation Build基础Creating a Chm build using SandcastleAIT Build Suite 2010 一份有趣的文档Solution:使用Team Build 2010 RC对SIlverlight项目进行持续集成Team Bui</summary><published>2011-03-20T03:21:00Z</published><updated>2011-03-20T03:21:00Z</updated><author><name>Jianqiang Bao</name><uri>http://www.cnblogs.com/Jax/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Jax/archive/2011/03/20/1989286.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Jax/archive/2011/03/20/1989286.html"/><content type="html">&lt;p&gt;官方论坛：&lt;/p&gt;&lt;p&gt;&lt;a href="http://social.msdn.microsoft.com/forums/en-US/tfsbuild/threads/"&gt;Build Automation Forum&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://archive.msdn.microsoft.com/TfsSdk"&gt;Team Foundation Server 2010 SDK&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;各种文章：&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/library/bb130146.aspx"&gt;Extending Team Foundation&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/magazine/cc163456.aspx"&gt;使用 MSBuild 和 Windows Installer XML 执行自动发布&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://knightyzj.javaeye.com/blog/463157"&gt;MSBuild的深入认识&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://blog.csdn.net/uniqueren/archive/2009/05/10/4164870.aspx"&gt;自动构造--MSBuild和Team Foundation Build基础&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/sandcastle/archive/2006/07/29/682398.aspx"&gt;Creating a Chm build using Sandcastle&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.aitgmbh.de/fileadmin/user_upload/pdf/Manual_AIT_Build_Suite_2010.pdf"&gt;AIT Build Suite 2010&lt;/a&gt; 一份有趣的文档&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/zlgcool/archive/2010/03/17/1688481.html"&gt;Solution:使用Team Build 2010 RC对SIlverlight项目进行持续集成&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/zlgcool/archive/2010/03/25/1696089.html"&gt;Team Build 2010 &amp;#8211; Gated Check-in 拒绝无法编译的代码嵌入&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en/tfsbuild/thread/e7ce7645-e66d-455e-b190-07d58a508f94"&gt;去除Gated Check-In自动生成的comments&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/ff977206.aspx"&gt;Control Where the Build System Places Your Binaries&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/jimlamb/archive/2009/01/23/coming-soon-gated-check-in.aspx"&gt;Coming soon &amp;#8211; Gated Check-in&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://mohamedradwan.wordpress.com/2010/10/15/deploy-db-project-with-team-build-2010/"&gt;Deploy DB project with Team Build 2010&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.richard-banks.org/2010/07/how-to-versioning-builds-with-tfs-2010.html"&gt;How To Versioning Builds With TFS 2010&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/aaronhallberg/archive/2007/07/02/team-build-and-web-deployment-projects.aspx"&gt;Team Build and Web Deployment Projects&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://geekswithblogs.net/jakob/archive/2010/09/01/tfs-team-build-2010-how-to-place-the-build-output.aspx"&gt;How to place the build output to a fixed location&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;各种技术blog：&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.ewaldhofman.nl/category/VSTS-2010.aspx"&gt;Ewald Hofman&amp;nbsp; VSTS 2010&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/jpricket/"&gt;Jason Prickett's Blog&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/jimlamb/"&gt;Jim Lamb&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.edsquared.com/default.aspx"&gt;Ed Squared&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/sun/tag/TFS/"&gt;Jeffrey Sun&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;各种开源项目：&lt;/p&gt;&lt;p&gt;&lt;a href="http://teambuildscreen.codeplex.com/"&gt;Team Build Screen&lt;/a&gt; 这个开源项目居然在画Team Build的界面&lt;/p&gt;&lt;p&gt;&lt;a href="http://tfsbuildextensions.codeplex.com/"&gt;TFS Build Extensions&lt;/a&gt; 源码很有趣&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;各种在线文档：&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.tramontana.co.hu/wix/"&gt;WiX在线文档&lt;/a&gt; 这个牛，还是彩色的&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/cc31bk2e.aspx"&gt;Team Foundation Version Control Command-Line Reference&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;附赠：&lt;/p&gt;&lt;p&gt;&lt;a href="http://graphics.stanford.edu/~seander/bithacks.html"&gt;Bit Twiddling Hacks&lt;/a&gt; 各种二进制算法&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.rainsts.net/"&gt;雨痕&lt;/a&gt; 技术小牛&lt;/p&gt; &lt;img src="http://www.cnblogs.com/Jax/aggbug/1989286.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2011/03/20/1989286.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Jax/archive/2011/02/10/1950615.html</id><title type="text">VSTF Build Workflow（6）为你的文件自动递增版本号</title><summary type="text">作为三部曲之一，本文介绍的是如何增加AssemblyVersion中的版本号。 每个项目都有一个AssemblyVersion.cs文件，其中，里面有2行是我们所需要的版本号。 对于一个编译生成的文件（这里以BuildEngine.dll为例），AssemblyVersion和AssemblyFileVersion会展示在它的Property面板中： 下面我们就要在Build的时候控制这两个值，...</summary><published>2011-02-10T03:05:00Z</published><updated>2011-02-10T03:05:00Z</updated><author><name>Jianqiang Bao</name><uri>http://www.cnblogs.com/Jax/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Jax/archive/2011/02/10/1950615.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Jax/archive/2011/02/10/1950615.html"/><content type="html">&lt;p&gt;作为三部曲之一，本文介绍的是如何增加AssemblyVersion中的版本号。&lt;/p&gt;  &lt;p&gt;每个项目都有一个AssemblyVersion.cs文件，其中，里面有2行是我们所需要的版本号。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101104083646.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101104094419.png" width="285" height="38" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;对于一个编译生成的文件（这里以BuildEngine.dll为例），AssemblyVersion和AssemblyFileVersion会展示在它的Property面板中：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101104109304.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101104127088.png" width="322" height="197" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;下面我们就要在Build的时候控制这两个值，每次Build的时候自动加一。&lt;/p&gt;  &lt;p&gt;思路如下：&lt;/p&gt;  &lt;p&gt;1.先把AssemblyInfo.cs这个文件check out出来，注意，是自动check out&lt;/p&gt;  &lt;p&gt;2.修改AssemblyInfo.cs中的版本信息&lt;/p&gt;  &lt;p&gt;3.把之前check out的所有文件都check in进TFS&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;具体步骤如下：&lt;/p&gt;  &lt;p&gt;1.添加对Microsoft.TeamFoundation.VersionControl.Client.dll的引用，它一般位于以下路径：&lt;/p&gt;  &lt;p&gt;c:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ReferenceAssemblies\v2.0\&lt;/p&gt;  &lt;p&gt;2.添加一个新的Activity，命名为AddVersionNumber，它的作用是使某个目录下的所有文件版本递增1，例如：把版本1.0.0.0升级为1.0.1.0&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101104161359.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101104249487.png" width="928" height="624" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;3.添加一个新的Activity，命名为CheckOut&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101104254895.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101104321660.png" width="629" height="424" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;4.添加一个新的Activity，命名为CheckIn&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101104337035.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101104369246.png" width="554" height="304" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;接下来，我们将视线转移到Build Template，这里我们仍然从VSTF中copy一份DefaultTemplate.xaml的副本，重命名为CustomTemplate2.xaml。在新的Build Template中，我们创建1个Argument，命名为AssemblyInfoFileMask：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101104378067.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101104389015.png" width="334" height="110" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;我们把之前定义的3个Activity拖到Build Template的Get Workspace（注意，不是Get the Build）之后，这个Activity不太好找，它位于Run On Agent的Initialize Workspace中的最后一个，如下所示：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/20110210110440802.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101104424998.png" width="202" height="480" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/20110210110444929.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101104463206.png" width="244" height="236" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;分别设置3个Activity必须的属性，直到没有红色惊叹号为止：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101104491829.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101104527562.png" width="908" height="154" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;也许有人会问，在上面图中输入的Workspace和SourceDirectory是在神马地方定义的？这是2个variable，定义在Run On Agent这个Scope中，如下图所示：&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101104549316.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101104574558.png" width="382" height="204" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;万事俱备，打开Build，将Build Process Template设置为CustomTemplate2.xaml，然后会发现多了一个字段需要我们输入，将其设置为AssemblyInfo.*，从而build执行时会检索文件名为AssemblyInfo的所有类型文件：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/20110210110457381.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/20110210110459216.png" width="244" height="37" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;执行Build，执行前检查Solution中的AssemblyInfo.cs为1.0.0.0&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101104594851.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101105007260.png" width="244" height="32" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Build后生成的文件版本为1.0.1.0&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101105024063.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101105047179.png" width="244" height="196" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;再次Build，生成的文件版本为1.0.2.0&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101105058160.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101105091352.png" width="244" height="195" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;本文下载代码：&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Jax/aggbug/1950615.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2011/02/10/1950615.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Jax/archive/2011/02/10/1950613.html</id><title type="text">VSTF Build Workflow（5）调试自定义Build Activity</title><summary type="text">Pending</summary><published>2011-02-10T03:04:00Z</published><updated>2011-02-10T03:04:00Z</updated><author><name>Jianqiang Bao</name><uri>http://www.cnblogs.com/Jax/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Jax/archive/2011/02/10/1950613.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Jax/archive/2011/02/10/1950613.html"/><content type="html">&lt;p&gt;Pending&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Jax/aggbug/1950613.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2011/02/10/1950613.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Jax/archive/2011/02/10/1950609.html</id><title type="text">VSTF Build Workflow（4）创建你自己的Build Activity</title><summary type="text">也许你还对上一节中我天马行空的介绍带有疑惑，比如说，上个Demo我只使用到了string类型，对于集合啦、自定义实体来并没有触及——我准备在另外的文章中再cover这些细节。还有，很多文章都会述及那个神奇的Metadata，可我却只字未提，因为这个Argument还有很多细节需要细细介绍， 除此之外，我想读者更好奇的莫过于VSTF Team为我们提供的那些用于Build的Activity了。 上...</summary><published>2011-02-10T02:59:00Z</published><updated>2011-02-10T02:59:00Z</updated><author><name>Jianqiang Bao</name><uri>http://www.cnblogs.com/Jax/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Jax/archive/2011/02/10/1950609.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Jax/archive/2011/02/10/1950609.html"/><content type="html">&lt;p&gt;也许你还对上一节中我天马行空的介绍带有疑惑，比如说，上个Demo我只使用到了string类型，对于集合啦、自定义实体来并没有触及——我准备在另外的文章中再cover这些细节。还有，很多文章都会述及那个神奇的Metadata，可我却只字未提，因为这个Argument还有很多细节需要细细介绍，&lt;/p&gt;  &lt;p&gt;除此之外，我想读者更好奇的莫过于VSTF Team为我们提供的那些用于Build的Activity了。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100126502928.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100126503451.png" width="265" height="59" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;上一个Demo中，我们使用到了Team Foundation Build Activites中的WriteBuildMessage，这个Activity用于在Build Log中输出一些信息。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/2011021001265171.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100126515370.png" width="244" height="137" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;其余还有40个Activity，各有各的用途，像我们目前在使用的Template这个xaml，就是由这些Activity和一些WF 4.0自带的Activity组成的。我会在之后研究DefaultTemplate.xaml的文章中介绍到这些Activity。&lt;/p&gt;  &lt;p&gt;那我们能否写一些自定义逻辑的Build Activity并在Template这个XAML中使用呢？&lt;/p&gt;  &lt;p&gt;Yes, you can, but 非常麻烦。&lt;/p&gt;  &lt;p&gt;基本思路是：&lt;/p&gt;  &lt;p&gt;1.自定义一些CodeActivity，它们都派生于某个Workflow基类，只有这样，才能在Build Template中显示我们定义的Argument，执行自定义的逻辑、&lt;/p&gt;  &lt;p&gt;2.把这些CodeActivity打包到一个dll中，我们要把这个dll放到VSTF知道的位置上。&lt;/p&gt;  &lt;p&gt;目标：&lt;/p&gt;  &lt;p&gt;写一个Activity，它能简单地处理数据，给输入的每个人名加上“Hello,”的前缀。&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;理清思路，确定目标后，我们就要开始动手实践了。&lt;/p&gt;  &lt;p&gt;1.创建一个sln项目并Check in到VSTF，它包括两个Class library：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100126513941.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/20110210012651877.png" width="244" height="134" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;如图所示，BuildEngine用来放置所有自定义的Activity；而BuildTemplate用来放置所有的Template。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;2.添加引用&lt;/p&gt;  &lt;p&gt;添加VSTF Team为我们提供的那些用于Build Workflow的dll，参照下图，缺哪个补哪个：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100126531169.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100126554559.png" width="554" height="288" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;你可能找不到那几个带有Workflow的dll所在的位置，请到这两个目录下找一找：&lt;/p&gt;  &lt;p&gt;C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ReferenceAssemblies\v2.0\&lt;/p&gt;  &lt;p&gt;c:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\&lt;/p&gt;  &lt;p&gt;对于Microsoft.TeamFoundation.TestImpact.Client.dll，你可能找不到这个dll，请点击这里下载，并将其check in到你的VSTF上，因为以后我们要一直使用它。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100126568430.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100126567492.png" width="446" height="146" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;同时，在BuildTemplate项目中添加对BuildEngine项目的引用，因为我们要在Template中添加自定义的Activity。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;3.开始写第一个Activity&lt;/p&gt;  &lt;p&gt;首先，在VSTF中添加一个新的Code Activity，命名为MessageHandler，对，我们就是要模拟上个Demo中使用到的VSTF Team提供给我们的WriteBuildMessage这个Activity。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/20110210012657216.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100126594196.png" width="364" height="282" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;VSTF会为我们自动生成一些code，我们保留其骨架，稍微修改如下：&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100126594719.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127005983.png" width="497" height="229" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;我们从代码自带的comments就能看到，它有一个Text属性，如果我们把MessageHandler这个Activity拖动到Workflow中，那么Text就会暴露在属性面板中，我们可以对其进行设置。&lt;/p&gt;  &lt;p&gt;此外，我们还要为MessageHandler添加一个Attribute，才能为VSTF所识别：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127017378.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127015949.png" width="441" height="44" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;4.将最原始的DefaultTemplate.xaml（VSTF自带的，没有做过任何改动）copy到BuildTemplate项目，并重命名为CustomTemplate1.xaml，同时，将它的Build Action修改为XamlAppDef&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/20110210012701933.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127012328.png" width="202" height="79" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/20110210012701900.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127017835.png" width="278" height="75" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;编译BuildEngine这个项目，当你切换到BuildTemplate项目，就可以在可视化页面CustomTemplate1.xaml的Toolbox中可以看到新生成的MessageHandler。&lt;/p&gt;  &lt;p&gt;友情提示：请保存好最原始的DefaultTemplate.xaml，我们宁肯每次copy一个副本、重命名，然后在上面做改动，也不会去直接修改原始文件。&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;5.打开CustomTemplate1.xaml，创建一个名为MessageA的Argument：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127022819.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127028293.png" width="441" height="79" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;6.从Toolbox中拖动MessageHandler到下图中的位置，也就是Get the Build这个Activity之后，同时在MessageHandler的属性面板中将Text设置为MyMessage：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127023276.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/20110210012703211.png" width="244" height="178" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127035195.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127041192.png" width="244" height="120" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;7.从Toolbox中拖动一个WriteBuildMessage到MessageHandler之后，同时，在WriteBuildMessage的属性面板中将Message设置为MyMessage：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/2011021001270479.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127044191.png" width="189" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127043078.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127054374.png" width="293" height="144" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;8.将修改后的CustomTemplate1.xaml文件check in到VSTF中。&lt;/p&gt;  &lt;p&gt;至此，我们完成了一个自定义的Build Activity的编码工作。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;接下来有很多事情要做。首当其冲的是，如何在Build时知道CustomTemplate1.xaml在什么位置呢？&lt;/p&gt;  &lt;p&gt;为此，我们打开Build面板，在Process这个Tab下，可以看到右上角就是让我们选择Dafault Template的，接下来的操作步骤是：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127087632.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127127269.png" width="634" height="445" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;1）点击New按钮，会打开New Build Process Template面板&lt;/p&gt;  &lt;p&gt;2）在新弹出的面板中，我们可以copy一个现有的Template到目标位置；也可以直接选择VSTF某个位置上的Template。这里我们使用后者，于是点击Browse按钮。&lt;/p&gt;  &lt;p&gt;3）于是弹出Browse对话框，让我们找出CustomTemplate1.xaml在VSTF上的位置。&lt;/p&gt;  &lt;p&gt;4）一路选择“确定”，得到如下画面：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127124204.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127137660.png" width="446" height="159" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;等一下，还没完。如果你迫不及待的立刻执行Build，就会得到如下错误日志：&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127146548.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127149513.png" width="742" height="44" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;究其原因，是VSTF并不知道我们编写的MessageHandler及其所在的dll——BuildEngine.dll在什么地方，所以在执行这个Activity时，解析不出来这是神马。&lt;/p&gt;  &lt;p&gt;也许你立刻会想到，把BuildEngine.dll放到GAC就万事大吉了。但，这不是一个完美的solution，因为每当你新安装一台build machine，都需要把相关的dll安装到GAC中，不胜其烦。&lt;/p&gt;  &lt;p&gt;另一种solution是，把BuildEngine.dll放到VSTF上，让VSTF知道这个dll所在的位置。同时，每次编译BuildEngine项目成功后，都会更新这个dll，详细步骤如下：&lt;/p&gt;  &lt;p&gt;1.把BuildEngine.dll放到VSTF上&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127157528.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127153318.png" width="333" height="158" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;2.让VSTF知道这个dll所在的位置，为此，右击Builds，在菜单中选择Manage Build Controllers&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127167396.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127161234.png" width="244" height="215" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;选择你使用的Agent所在的Controller，点击Properties按钮：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127179739.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127184100.png" width="383" height="198" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;在弹出的对话框中，我们终于找到了可以选择自定义Build Activity路径的地方，将其指定为BuildEngine.dll所在的目录：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100127214327.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101058348529.png" width="440" height="431" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;以后，只要我们使用这个Controller下的Agent执行Build，就会检查$BaobaoAgile/BuildAssemblies目录的dll并试着加载。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;最后，我们要在每次编译成功之后自动更新VSTF上的这个文件，右击BuildEngine项目打开Property窗体，转到Build Events，在Post-Build窗口中输入以下script：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101058359858.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101058377185.png" width="516" height="63" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;第一行脚本将VSTF上的BuildEngine.dll这个文件checkout到本地路径&lt;/p&gt;  &lt;p&gt;第二行脚本将新生成的BuildEngine.dll复制到VSTF对应的本地路径下；注意这里的第2个参数，也就是源文件的位置，请确保这个路径是正确的。&lt;/p&gt;  &lt;p&gt;最后一行脚本checkin这个文件&lt;/p&gt;  &lt;p&gt;以下是运行时的实际路径：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101058381164.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101058396397.png" width="962" height="60" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;你可以观察VSTF上的BuildEngine.dll，每次编译BuildEngine这个项目时，BuildEngine.dll的更新时间都会Update&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;现在我们可以放心大胆地执行Build了，在执行前请先在Build面板中将MessageA属性设置为Baobao：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101058391032.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101058409886.png" width="244" height="46" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;执行Build，我们看到，Build Log中成功打印出hello, Baobao&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101058409297.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102101058416756.png" width="175" height="110" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;本文代码下载：WFBuildSolution&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Jax/aggbug/1950609.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2011/02/10/1950609.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Jax/archive/2011/02/10/1950485.html</id><title type="text">VSTF Build Workflow（3）Hello World!</title><summary type="text">思路逐渐清晰了，Build Workflow的solution就是：修改Build Template（就是那个XAML），最后看Build的输出结果。 二话不说，我们先做一个Demo： 1.双击打开Build Template Workflow还是我们之前看到的那个，没有变化，但是，请留意左下角的那三个蓝底白字的Tab：分别是Variables、Arguments和Imports 2. 点击A...</summary><published>2011-02-09T17:23:00Z</published><updated>2011-02-09T17:23:00Z</updated><author><name>Jianqiang Bao</name><uri>http://www.cnblogs.com/Jax/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Jax/archive/2011/02/10/1950485.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Jax/archive/2011/02/10/1950485.html"/><content type="html">&lt;p&gt;思路逐渐清晰了，Build Workflow的solution就是：修改Build Template（就是那个XAML），最后看Build的输出结果。&lt;/p&gt;  &lt;p&gt;二话不说，我们先做一个Demo：&lt;/p&gt;  &lt;p&gt;1.双击打开Build Template&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100122526486.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100122533944.png" width="172" height="340" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Workflow还是我们之前看到的那个，没有变化，但是，请留意左下角的那三个蓝底白字的Tab：分别是Variables、Arguments和Imports&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100122531752.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100122534783.png" width="198" height="25" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;2. 点击Arguments，可以看到一份Arguments列表，它们都是实现定义好的，如下所示：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100122541337.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100122553157.png" width="559" height="240" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;3.在列表的最下面，可以看到有一行Create Argument，&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100122553680.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100122561106.png" width="358" height="187" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;点击该行，创建一个新的Argument，设置它的Name为MessageA，其它属性为默认值。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/20110210012256549.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100122565533.png" width="409" height="28" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;4.介绍完Argument，我们试玩一下Variable&lt;/p&gt;  &lt;p&gt;你们不觉得Argument是一个全局变量么？至少在这个Template中，一次声明，处处使用。&lt;/p&gt;  &lt;p&gt;而Variable则是有scope的。在父亲级别的Activity中定义一个Variable，在其中的所有子Activity都可以直接使用，但反之不行。&lt;/p&gt;  &lt;p&gt;在这个Scenario中，我们选中Sequence这个最顶部的Activity（高亮显示表示我们选中了），&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100122576023.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100122571322.png" width="202" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;创建一个Variable，取名为MyMessage，并将其默认值设置为&amp;quot;Hello&amp;quot; + MessageA，那么这个Variable就随时随地都可以使用了。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100122579894.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100122584811.png" width="373" height="127" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;5.接下来，我们要输出MyMessage这个Variable&lt;/p&gt;  &lt;p&gt;为此，我们需要从Toolbox中拖出一个名为WriteBuildMessage的Activity，&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100122587843.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100122581190.png" width="244" height="103" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;把它放置于Template的Get the Build这个Activity之后：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100122589762.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100122591091.png" width="238" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;看到那些红色惊叹号了没？这是因为这个Activity上还有一些Required的属性没有设置。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;6.选中WriteBuildMessage，按F4打开属性窗体，&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100122593251.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100123005137.png" width="311" height="159" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;我们将Message属性设置为MyMesage（这是一个Variable），同时，为了在Workflow上显示得更有意义，我们将DisplayName修改为Show some words&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100123004024.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100123015005.png" width="318" height="164" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;于是，Workflow的外观变成了：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100123019988.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100123018875.png" width="237" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;7.至此，一个Demo全都做好了，别忘了还有最后一步，就是把修改后的Template（即xaml）check in到VSTF中&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;怎么玩呢？玩Build也是一种学问。&lt;/p&gt;  &lt;p&gt;1.重新打开我们之前创建的Build：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100123023269.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100123037871.png" width="318" height="225" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;我们发现多了一个名为Show a message的字段，我们将其设置为World&lt;/p&gt;  &lt;p&gt;2.现在可以执行Build了。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/20110210012303629.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100123042690.png" width="244" height="190" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;在Build完成所生成的输出界面中，我们并没有发现VSTF为我们额外生成些什么信息。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100123055165.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100123055414.png" width="403" height="228" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;这是因为，还记得我们拖到Workflow中的WriteBuildMessage那个Activity么？仔细观察它的Inportance属性，被设置为Normal（另外两个值分别是High和Low）&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100123063920.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100123075806.png" width="338" height="154" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;而在VSTF的Build面板中，我们发现Logging Verbosity的值也是Normal（另外3个值分别是Minimal、Detailed和Diagnostic）&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100123075740.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100123101539.png" width="391" height="310" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;正是这两个地方设置的值不匹配才导致了我们所要的输出结果看不到的问题。&lt;/p&gt;  &lt;p&gt;有2种解决方案：&lt;/p&gt;  &lt;p&gt;1.在Workflow中将Importance设置为High。&lt;/p&gt;  &lt;p&gt;2.在VSTF的Build面板中，将Logging Verbosity的值设置为Detailed（设置为Diagnostic也可以，但会生成大量冗余的信息）&lt;/p&gt;  &lt;p&gt;无论哪一种方法，都会输出Hello World的信息，如下图所示：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100123108474.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102100123113392.png" width="357" height="182" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;总结一下：我们修改了Template（添加了Argument和Variable，以及一个Build Activity），于是在VSTF的Build Template中要求我们多输入一个Show a message参数，所以在Build的时候，会输出Hello World的信息。&lt;/p&gt;  &lt;p&gt;这一切的中枢，就是那个Metadata对话框，通过它，我们把Workflow中的Argument和VSTF中的Build Template参数一一mapping起来。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Jax/aggbug/1950485.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2011/02/10/1950485.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Jax/archive/2011/02/09/1950335.html</id><title type="text">VSTF Build Workflow（2）DafaultTemplate.xaml分析</title><summary type="text">书接上文，我要介绍的Workflow在哪了呢？ 打开我们之前创建的Build： 我们在Process这个Tab中，看到VSTF为默认指定了一个Template，这是一个Wrokflow XAML文件，它位于根目录下的BuildProcessTemplates目录中。 按图索骥，我们在VSTF中找到了这个XAML文件： 这个xaml记载了我们在执行一个build时所要做的所有工作以及顺序，下面让我...</summary><published>2011-02-09T09:45:00Z</published><updated>2011-02-09T09:45:00Z</updated><author><name>Jianqiang Bao</name><uri>http://www.cnblogs.com/Jax/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Jax/archive/2011/02/09/1950335.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Jax/archive/2011/02/09/1950335.html"/><content type="html">&lt;p&gt;书接上文，我要介绍的Workflow在哪了呢？&lt;/p&gt;  &lt;p&gt;打开我们之前创建的Build：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102091745037421.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102091745048402.png" width="244" height="243" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;我们在Process这个Tab中，看到VSTF为默认指定了一个Template，这是一个Wrokflow XAML文件，它位于根目录下的BuildProcessTemplates目录中。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102091745066601.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102091745078628.png" width="594" height="182" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;按图索骥，我们在VSTF中找到了这个XAML文件：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102091745083546.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102091745095955.png" width="424" height="98" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;这个xaml记载了我们在执行一个build时所要做的所有工作以及顺序，下面让我们详细分析一下它。&lt;/p&gt;  &lt;p&gt;双击该XAML，会打开一个Workflow活动图，这是一个Sequence活动图（区别于另一种Workflow自动机）&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102091745109793.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102091745111645.png" width="219" height="381" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;从总体上看，这个Sequence活动图由4部分组成：&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Get the build &lt;/li&gt;    &lt;li&gt;Update Drop Location &lt;/li&gt;    &lt;li&gt;Run on Agent &lt;/li&gt;    &lt;li&gt;Check in Geted Changes for CheckInShelveSet Builds &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;关于这个Sequence的介绍，我会专门用一篇文章来cover。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;继续观察这个XAML所在的位置，我们可以选择其它的模板，这时你会发现Build process parameters下的内容会跟着模板的change而改变。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102091745121447.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102091745147869.png" width="644" height="375" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;可以理解为，这里是我们的输入，这些值会在Build的时候传入Workflow，从而影响输出。输出在哪里呢？我们在执行完一个Build的时候，无论成功与否，都会进入这样的窗体：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102091745171018.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jax/201102/201102091745181933.png" width="466" height="424" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;这是一份输出清单，我们可以定义自己的逻辑，把build中我们想要confirm的数据都打印出来，无论何时何地。在下一篇文章，我们会做一个小Demo，来验证我所描述的。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Jax/aggbug/1950335.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jax/archive/2011/02/09/1950335.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
