接着上一篇的說,如今有一個已知前提: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太大?這都不是事......