Dynamics CRM 匯入解決方案時如何做到不覆蓋目標系統的站點地圖

vic0228發表於2017-12-20

      解決方案的匯入匯出有兩種模式,一種是託管,一種是非託管,在實際的專案中,不知道各位用哪一種多。如果我們的解決方案中包含有站點地圖,不做任何設定的情況下,肯定是覆蓋目標環境的站點地圖的。

     如果大家關注過powerobject這個網站,或者試用過他們的產品,匯入他們的解決方案後會發現,是動態的新增站點地圖塊,而不是覆蓋,那這是怎麼做到的呢。


    微軟的官方文件及SDK裡都沒有對這塊的說明,如果你有心去解壓過託管解決方案看過,你會發現解決出來的sitemap和非託管的解決方案中的sitemap是不同的,多了下面截圖中的兩個屬性,ordinalvalue和solutionaction。


    我們再去sdk中查下,完全沒有這兩個屬性的說明,網上也沒有這兩個屬性的解釋,但從字面意思大體能意會出來,solutionaction的意思是說匯入目標系統中後是對具有相同的Id和ResourceId的area是修改、移除、還是新增,而ordinalvalue是次序,設定顯示在站點地圖上的第幾個。

    按照上面我截圖中的示例,我是要新增一個NewArea,但不想去修改或者移除目標系統的站點地圖塊,那隻需將不需要的刪除,保留需要新增的area,然後設定次序為4,儲存並把解決方案包壓縮後匯入目標系統即可。


    上述方法只對託管解決方案有效,因為兩個屬性只存在於託管解決方案中,如果你編輯非託管解決方案中的sitemap新增這個兩個屬性後再匯入會提示xml無效。

相關文章