Dynamics 365 自动化发布工具Spkl介绍

news2024/12/23 13:21:14

      本篇主要是为了后面讲述CI/CD时用到的工具做一个说明,先奉上spkl的github地址,没听说过的可以去查看下,挺不错的工具。

      我们主要用这个工具来部署WebResource, Plugin和Workflow Activities 以及后续的CI

      首先从nuget上下载工具包,

    下载完后会看到一个spkl的文件夹和一个spkl.json的配置文件

     在WebResource目录下建了两个js用于测试

     下一步就是去配置spkl.json,将文件映射到系统的解决方案下,这里贴出我的POC环境下的配置供参考, 关键的就是我注释的几个配置,

 "webresources": [
      {
        "profile": "default,debug",
        //相对于配置文件的目录的相对路径
        "root": "./Webresources/",
        //解决方案名称
        "solution": "DevopsWebResource",
        "files": [
          {
            "uniquename": "ava_/Contact.js",//系统中的webresource名称
            "file": "scripts/Contact.js",//文件路径
            "description": ""
          }
        ]
      },
      {
        "profile": "default,debug",
        "root": "./Webresources/",
        "solution": "DevopsWebResource",
        "files": [
          {
            "uniquename": "ava_/Test.js",
            "file": "scripts/Test.js",
            "description": ""
          }
        ]
      }
    ]

     以上都配置完后就可以去发布了,到spkl文件夹下双击webresource的批处理文件"deploy-webresources.bat"

     首次打开会让你输入系统的登录信息,输入URL后会弹登录框让你登录

     登录后就会根据配置文件自动发布了, 批处理脚本会判断JS是否有更改,有更改才会发布,没更改就直接跳过了

    当然也可以采用unattended的命令执行方式,以管理员身份运行cmd, cd到批处理文件所在目录,执行deploy-webresources.bat "连接字符串",这种unattended的方式也是后续CI中会用到的执行方式

url=https://xx.crm5.dynamics.com/;AuthType =ClientSecret;ClientId=ssxxxx28f-a166-3b54179c3a86;ClientSecret=xxxxxx2u~nmHXQco~;AppId =xxxxx79c3a86; RedirectUri = app://343fd800-95a9-4f75-9c59-0dde4990de54;

     以上WebResource的自动发布方式就介绍完了,下面再介绍下Plugin

     spkl的包下载后会有个CrmPluginRegistrationAttribute的说明文件,可以看下里面的内容,定义了Plugin注册所用到的内容,只需要在我们的Plugin头上注明当前Plugin的注册信息即可

    Plugin的相关配置文件很简单,指定你Assembly所在的文件目录即可

    "plugins": [
      {
        /*
            Required - assemblypath - Relative path (from this file or the path parameter above) to the assembies to deply
            Can be either plugins or workflow activities
            Create multiple entries for different profiles
            */
        "profile": "default,debug",
        "assemblypath": ".\\bin\\debug"
        /*
            Optional - defines the regex to use to detect a plugin or workflow activity when using a custom base class
            */
        //"classRegex": "((public( sealed)? class (?'class'[\\w]*)[\\W]*?)((?'plugin':[\\W]*?((IPlugin)|(PluginBase)|(Plugin)))|(?'wf':[\\W]*?CodeActivity)))"
      }
    ]

     

     然后就是执行Plugin的批处理命令

    最后去插件注册器看下,已成功注册上了,好处是不用你再打开插件注册器手工去注册Plugin和Step等了

    最后附上常用的几个注册说明供参考,具体可查看参数提示

    [CrmPluginRegistration(MessageNameEnum.Create, "account", StageEnum.PreValidation, ExecutionModeEnum.Synchronous, "", "Pre Create Account", 1, IsolationModeEnum.Sandbox)]
    [CrmPluginRegistration(MessageNameEnum.Create, "account", StageEnum.PostOperation, ExecutionModeEnum.Synchronous, "", "Post Create Account", 1, IsolationModeEnum.Sandbox)]
    [CrmPluginRegistration(MessageNameEnum.Update, "account", StageEnum.PreValidation, ExecutionModeEnum.Synchronous, "name", 
        "Pre Update Account", 1, IsolationModeEnum.Sandbox, Image1Attributes = "", Image1Name = "preimage", Image1Type = ImageTypeEnum.PreImage)]
    [CrmPluginRegistration(MessageNameEnum.Update, "account", StageEnum.PostOperation, ExecutionModeEnum.Synchronous, "name", "Post Update Account", 1, IsolationModeEnum.Sandbox)]

 

 

 

     

 

      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/535550.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringMVC访问JSP页面

1. 在spring-web中配置视图解析器 <!--3&#xff1a;配置JSP 显示ViewResolver--> <bean class"org.springframework.web.servlet.view.InternalResourceViewResolver"><property name"viewClass" value"org.springframework.web.ser…

【Python】PIL给图片添加水印最全代码解释

给图片添加水印 以下是一个添加水印的方法&#xff0c;你可以将其放在一个单独的 Python 文件中&#xff0c;然后在需要添加水印的地方调用该方法即可&#xff1a; from PIL import Image, ImageDraw, ImageFontdef add_watermark(image_path, text, font_path, font_size40,…

Redis 经典面试题合合集详解

❤ 作者主页&#xff1a;欢迎来到我的技术博客&#x1f60e; ❀ 个人介绍&#xff1a;大家好&#xff0c;本人热衷于Java后端开发&#xff0c;欢迎来交流学习哦&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 如果文章对您有帮助&#xff0c;记得关注、点赞、收藏、…

Cy7-COOH近红外菁染料CAS号1628790-40-8星戈瑞

CY7-COOH是一种红外荧光染料&#xff0c;其最大激发和发射波长分别为750nm和773nm。这种荧光染料分子具有较高的光稳定性和化学稳定性&#xff0c;可以在细胞和组织中长时间稳定地发光&#xff0c;因此应用于生命科学领域的荧光显微镜成像、生物传感和分析等方面。 产品名称&a…

深眸科技|工业3D视觉创新崛起,与2D视觉融合创建更高效解决方案

近年来&#xff0c;伴随着人工智能技术的进步&#xff0c;行业应用需求的提升&#xff0c;机器视觉技术持续升级。由于2D视觉技术难以满足精密制造行业不断提高的精度需求&#xff0c;能够更全面、更多维了解产品信息的3D视觉技术逐渐火热&#xff0c;并掀起浪潮。 据GGII数据…

西米支付:数字人民币接口来了!实时清算至数字人民币钱包。

1. 产品概述 什么是数字人民币&#xff1f; 是由中国人民银行发行的数字形式的法定货币&#xff0c;由指定运营机构参与运营&#xff0c;与实物人民 币等价&#xff0c;具有价值特征和法偿性&#xff0c;是一种零售型央行数字货币&#xff0c;也是未来主流支付方式之一&#…

楠姐技术漫话:图计算的那些事 | 京东云技术团队

不知道大家在平时的工作中 有没有听说过“图计算”这个名词 但大家一定在各工作汇报&#xff0c;技术分享中听说过“智能化”&#xff0c;“人工智能”这样的字眼 而我们今天要唠的这个图计算 就是人工智能领域内近几年炙手可热的前沿宠儿 也是我们风控反欺诈中常用的“大杀…

不会Elasticsearch标准查询语句,如何分析数仓数据?

1 Elasticsearch的查询语句 ES中提供了一种强大的检索数据方式,这种检索方式称之为Query DSL,Query DSL是利用Rest API传递JSON格式的请求体(Request Body)数据与ES进行交互&#xff0c;这种方式的丰富查询语法让ES检索变得更强大&#xff0c;更简洁。 1.1 查询预发 # GET /…

ChatGPT中文使用手册

简要介绍&#xff1a; First&#xff1a;什么是ChatGPT? ChatGPT是由OpenAI训练的一款大型语言模型&#xff0c;最新版为GPT3.5&#xff08;公开版&#xff09;和GPT4.0&#xff08;PLUS会员版本&#xff09; 它能够生成类似于人类写作的文本。您只需要给出提示或提出问题&…

ChatGPT实现游戏 NPC 对话

游戏 NPC 对话 玩游戏的一个必要过程&#xff0c;就是和 NPC 对话&#xff0c;领取任务&#xff0c;获取线索。有趣的游戏&#xff0c;会根据用户和 NPC 交流时的不同选择&#xff0c;触发不同剧情走向。甚至多个 NPC 之间还能有罕见的隐藏剧情&#xff0c;等待用户发掘。可以…

《PyTorch高级机器学习实战》包邮送书三本

目录 前言书籍目录抽奖方式 前言 随着人工智能和机器学习的蓬勃发展&#xff0c;相关算法和技术已经广泛运用到诸多行业&#xff0c;大量的研究者和各行业人员也投入机器学习的研究与开发中。 掌握高级机器学习算法原理&#xff0c;并能够根据不同情况实现灵活运用&#xff0…

NineData:高效高质量的Redis可视化管理工具

Redis 是一个内存数据结构存储系统&#xff0c;它被广泛用于缓存、队列、实时分析等多种应用场景中&#xff0c;目前已经成为 Key-value 数据存储系统中的佼佼者&#xff0c;根据 DB-Engine 网站提供的最新数据&#xff0c;Redis 在 Key-value stores 类别中排名第一&#xff0…

Dynamics 365 DevOps CI/CD之Solution

CI/CD到了Soution就没太多可说的了&#xff0c;按部就班配置就行&#xff0c;我选择的工具是Power DevOps Tool 1&#xff0c;首先下载工具&#xff0c;然后设置连接字符串去连环境&#xff0c;连接字符串还是用ClientSecret的形式 2&#xff0c;当然导出前还是要发布下自定义的…

小程序分包

分包加载的介绍 大部分小程序都会由某几个功能组成&#xff0c;通常这几个功能之间是独立的&#xff0c;但会依赖一些公共的逻辑&#xff0c;并且这些功能通常会对应某几个独立的页面。那么小程序代码的打包&#xff0c;大可不必一定要打成一个&#xff0c;可以按照功能的划分&…

c/c++ 宏定义里的#和##

工作中如果是c开发的话&#xff0c;经常会用到宏定义&#xff0c;而宏定义中的#和##也会时不时遇到&#xff0c;今天分享这两个符号的作用。 1&#xff0c;# -- 转换成字符串 直接看例子&#xff1a; #include <stdio.h> #include <stdlib.h>#define VAL2STR(VA…

vue非单文件组件的使用方法

标准化开发时的嵌套&#xff1a; 在实际开发中&#xff0c;通常会创建一个 APP 组件作为根组件&#xff0c;由这个根组件去管理其它的组件&#xff0c;而 Vue 实例只需要管理这个 APP 组件就行了。 <!DOCTYPE html> <html><head><meta charset"utf…

springboot+java办公用品租赁领用管理信息系统

将系统权限按管理员和员工这两类涉及员工划分。 (a) 管理员&#xff1b;管理员使用本系统涉到的功能主要有&#xff1a;个人中心、员工管理、办公用品管理、领用申请管理、采购申请管理、物品分类管理、系统管理等功能。 (b)员工进入系统前台可以实现办公用品管理、领用申请管理…

TimerResolution.exe

TimerResolution.exe是一款常用的Windows实用程序,用于调整系统计时器的分辨率。它提供了一种简便的方法,让用户能够更精确地控制计时器的运行方式,从而改善系统的性能和响应时间。无论是进行游戏、音频处理还是其他需要精确计时的任务,TimerResolution.exe都能提供极大的帮…

【PR】来制作视频进度条吧~

【PR】来制作视频进度条吧~ 制作进度条制作分割线及标题分割线标题其他 为啥视频要有进度条~ 方便观众回看和定位&#xff1a;添加进度条可以让观众在观看视频时随时了解视频播放的进度&#xff0c;也方便观众在需要回看或者查找某一段内容时能够更加精准地定位。 提高观看体验…

当电脑回收站图标不见后,这4种方法帮你快速恢复

我们都知道&#xff0c;在电脑上删除文件时&#xff0c;这些文件多数都会先停留在回收站中。当我们后悔删除这些文件时&#xff0c;往往可以通过回收站还原&#xff0c;可是有些小伙伴却发现自己的电脑回收站不见了&#xff0c;这无疑给我们的回收站文件恢复工作带来不便&#…