接着上一篇的说,如今有一个已知前提:Solution的增量特性。而后咱们再思考这么一个场景,项目开发过程当中,存在屡次迭代的状况,每次迭代可能涉及到的solution是同一个,惟一区别的,就是solution里的component有一些修改或增长。随着迭代的进行,solution里的components会愈来愈多,而每次solution导入的components全是此次迭代的内容么?若是以前的components又覆盖了一遍,如何确保不影响生产环境已有的业务呢?咱们很天然地就会想,可不能够修改solution,让它保持只含有迭代涉及的定制信息,以及Solution的描述信息,剩下的都不要。而这篇的内容就是为了解决这个问题的。spa
components的修改涉及到两种:一种是整个component的增长和删除,而另外一种则是对component进行内容上的增长和删除。3d
1. 整个component的增长和删除component
这个简单点的操做,就是在CRM上直接进行增删。orm
点击Remove或者Add Existing,来对solution里的component进行操做,注意删除是说把component从当前的solution移除出去,而不是在环境里把它删除掉,因此必定不要误点了Delete。xml
这里为了接下来的内容,咱们不采用这种方式,而是直接对solution的zip进行处理。在CRM中Export Solution,而后解压,会看到有这些文件。blog
首先咱们打开customizations.xml,找到关于Opportunity的Entity节点信息,把这个节点删掉。ip
接着再找到相关的EntityMap节点信息,把它也删除掉开发
这样这个xml关于Opportunity的描述信息咱们就清理干净了。rem
接下来再打开solution.xml,这里也会有关于Opportunity的描述信息,把RootComponent删掉。it
而后还把MissingDependency节点都删掉。
这就等价于在CRM上把Opportunity Component从solution中remove掉,以后把文件再压缩到zip包里,更新后的solution就大功告成了。
2. Component内容上的修改
再来想象个场景,你的solution里有100个Entity,关于这100个Entity此次迭代的内容,是每一个Entity上都新添加了一个名叫new_LastStage的字段,而后你须要将这部份内容更新到生产环境里,怎么实现呢?这个时候,solution的增量特性就颇有用了,咱们是否是能够这么想,每一个Entity都只包含new_LastStage字段,其余的内容都去掉,而后再import到环境里,由于是增量的,因此能达到效果,实现了字段的添加。
接下来就说说如何修改。
打开customizations.xml,找到Entities节点,以一个Entity为例。
attributes节点里放了这个Entity的全部字段,除了new_LastStage,咱们把其它的attributes删除,这样咱们就只保留了要添加的字段,是否是很简单呢!进一步而言,咱们彻底能够控制Solution里只有咱们想要的信息。上面的例子里,若是只是新加字段,不涉及form,view的改变,那咱们还能够把form和view的节点内容清空;若是不涉及relationship添加,咱们还能够把EntityMaps,EntityRelationships清空,这样就大大减少了solution的复杂度,最后你会发现,环境不给力?Solution太大?这都不是事......