• Dynamics 365执行Remove Active Customizations的多种方法


    我是微软Dynamics 365 & Power Platform方面的工程师/顾问罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),欢迎关注我的微信公众号 MSFTDynamics365erLuoYong ,回复423或者20201009可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!

    非托管层(Unmanaged Layer) 在你使用托管解决方案(Managed Solution)的时候挺烦的,一般是在目标环境手动修改某些组件而产生,产生后它一直会居于Solution Layer的最上层,会遮住Managed Solution导入而产生的Solution Layer,这样看起来就是Managed Solution导入后没有效果。一般我们是需要删除掉非托管层(Unmanaged Layer) 的,有多种方法,请听我说道来。

    最常见的是在界面上操作的方法。查看组件的Solution Layers方法如下,打开某个Solution,选择某个组件,然后点击【Solution Layers】按钮。

     如果出来的界面显示有一个Solution名称为Active的Solution Layer,这个Solution Layer就是Unmanaged Layer。因为它的Order总是最大的,会覆盖下面的Solution Layer,会导致导入的Managed Solution没有效果。

     删除它也很简单,点击【Active】旁边的 【...】符号,点击出来【Remove Active Customizations】进行删除即可。

      

    你应该会想,一个个看,删除太慢太麻烦了,有批量处理工具吗?有的,XrmToolBox中有个工具叫做 Solution Layer Removal 可以批量查看和移除。

      

    操作也比较简单,点击【Load Solutions】按钮,然后选择某个Solution,再点击【Load Unmanaged Components】就会列出该Solution中所有含有Unmanaged Layers的组件。

    选中要移除Unmanaged Layer的组件,点击【Remove Active Customizations】按钮进行移除即可。

     有时候还会用到特殊的方法来Remove Active Customizations,这就是 RemoveActiveCustomizations Function,这个函数包括两个输入参数,第一个输入参数SolutionComponentName,官方文档有说明它是string类型,并没有讲有哪些值,我这里列表如下,第二个参数ComponentId这个容易猜出来,就是要移除的组件的id,一般在解决方案中双击某个组件而弹出的窗口中就会有这个id的值。

    SolutionComponentName说明
    AppModule  
    AttributePicklistValue  
    LocalizedLabel  
    OptionSet  
    PluginAssembly  
    PluginType  
    SdkMessageProcessingStep  
    SiteMap  
    SystemForm  
    WebResource  
    Workflow  
    SavedQuery  
    Custom Connectors  
    FieldSecurityProfile  
    FieldPermission  
    Field (attribute)

    除了这些类型都支持: image, file, customer, owner, virtual, partylist, calendarrules, rollup / calculated

    Role  
    RolePrivileges  
    Relationships  
    Entity 暂不支持
    AIModel 开发中
    AIConfiguration 开发中
    Custom Components  

    值得说明的是,如果你要处理的对象是仪表盘(Dashboard),则使用SystemForm作为SolutionComponentName参数的值。

    那怎么使用呢?很简单。我在解决方案中双击某个Role,打开的窗口的URL类似 https://luoyongdemo.crm.dynamics.com/biz/roles/edit.aspx?appSolutionId=%7b02A296F0-BB49-4A19-9D1B-A0746319B0DB%7d&id=%7b758F55FB-9D8E-EA11-A811-000D3A33BE69%7d&_CreateFromType=7100&_CreateFromId=%7b02A296F0-BB49-4A19-9D1B-A0746319B0DB%7d 

    从这个url中可以知道这个Role的id是758F55FB-9D8E-EA11-A811-000D3A33BE69,要删除安全角色的Active Customizations,第一个参数SolutionComponentName需要传递Role,然后直接用浏览器发起如下请求:

    https://luoyongdemo.crm.dynamics.com/api/data/v9.1/RemoveActiveCustomizations(SolutionComponentName='Role',ComponentId=758F55FB-9D8E-EA11-A811-000D3A33BE69)

    如果成功则结果类似如下:

  • 相关阅读:
    物联网与边缘计算的融合
    在【自我认知】大学,你可能永远毕不了业
    Spring Security实现短信验证码登录
    线上课程
    【技术人成长】公众号
    大数据是阿猫阿狗都能玩的吗
    机器不能代替你思考
    如何缓解需求沟通中的鸡同鸭讲
    如何成为一个更渊博的技术人
    招聘季,聊聊那些古怪的候选人
  • 原文地址:https://www.cnblogs.com/luoyong0201/p/Dynamics_365_Remove_Active_Customizations.html
Copyright © 2020-2023  润新知