openRPA开源项目源码编译
最近接触到了一个新的领域——RPA,RPA全称Robotic Process Automation,中文名为机器人流程自动化。RPA可以视作一个数字机器人,它可以通过程序来模拟人与软件系统的交互过程,代替人工将大量重复、有规则的计算机操作自动化,以非侵入式(即不对原来的程序和系统进行二次开发)部署,打通不同系统之间的数据孤岛。RPA目前已成为一项关键技术,它在提升工作效率和降低成本方面扮演着重要角色。通过减少业务流程中的错误、处理时间、开支以及不必要的操作,我们能够显著优化系统的工作流。
 想要从零开始开发一个RPA需要不仅需要丰富的技术知识积累而且需要大量的人力资源,因此打算选择市面上开源RPA框架作为基础进行二次开发。目前市面上开源的RPA框架主要五个,分别是:Robot Framework、Taskt、UI.Vision、OpenRPA和TagUI,参考这篇博客中总结的各个框架的优缺点如下:
 
 因需要开发的RPA中需要包含通过拖拽的方式配置流程的功能,综合考虑下来决定选择使用OpenRPA为框架作为基础进行二次开发,以下内容主要记录OpenRPA source code编译方法以及编译过程中遇到的error。
1 source code下载
openRPA的github地址为:
https://github.com/open-rpa/openrpa
参考官方文档,在gitbash中通过以下命令下载源代码:
git clone https://github.com/open-rpa/openrpa.git --recursive
2 source code build
openrpa是由多个子项目组成的,下载完成后官方推荐使用Visual Studio 2022社区版打开OpenRPA.sln,需要注意的是openrpa中大多数子项目基于.net 4.6,所以Visual Studio 2022中需要提前安装.net 4.6.2。
 第一次打开项目后会出现不支持的提示,点击确定就可以。
 
 然后会出现Open3276Library .net版本不支持的问题,选择默认选项点击继续就行。
 
 迁移报告中会出现一项error,不必理会。
 
 按照官方文档中说明,需要关闭visual studio再重新打开openrpa.sln,然后需要删除“installer”文件夹下的两个安装程序项目,即下图中框住的两个文件。
 
 然后选择重新生成解决方案,竟然出现了74个错误,一开始有被吓到,差点被劝退。仔细看了一下大多数是.net版本兼容和项目直接的依赖关系方面的错误。
 
 接下来开始一一处理这些错误,第一个错误如下:
“H:\Code\RPA\openrpa\OpenRPA.NamedPipeWrapper\bin\Debug\net40\OpenRPA.NamedPipeWrapper.dll”
出现这种问题是因为OpenRPA.NamedPipeWrapper项目的目标.NETFramework是4.5,但是我的电脑里没有安装.NETFramework4.5,虽然官方里推荐的是用VS2022编译,但是感觉使用VS2017应该就不会出现这种问题。这种问题有两种解决方法:
 (1)电脑中下载安装.NETFramework是4.5
 (2)将OpenRPA.NamedPipeWrapper项目的目标.NETFramework是改为电脑中已经安装的4.6
 我选择了第二种方法。
 
 更改完OpenRPA.NamedPipeWrapper项目的目标.NETFramework后重新生成一下NamedPipeWrapper项目,然后再重新重新生成解决方案,这时错误就剩15个了

 接下来看到Open3276Library这个子项目的error 挺多的,查看发现刚才项目迁移的时候将Open3276Library默认.NETFramework设置成了4.8,正确的应该是设置成4.6。
 
将Open3276Library默认.NETFramework设置成4.6后重新生产Open3276Library,然后再重新生产解决方案,error就剩下6个了。
 
 然后就是下面这个error最多,SAPBridge这个子项目暂时用不到,就简单粗暴的直接从项目中移除。
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 NU1201 项目 OpenRPA.NamedPipeWrapper 与 net45 (.NETFramework,Version=v4.5) / win7-x86 不兼容。 项目 OpenRPA.NamedPipeWrapper 支持: net46 (.NETFramework,Version=v4.6) OpenRPA.SAPBridge H:\Code\RPA\build-test-openrap\openrpa\OpenRPA.SAPBridge\OpenRPA.SAPBridge.csproj 1
移除SAPBridge子项目后error就剩两个了。
 
 先处理LiteDB子项目的error.
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 MSB3644 找不到 .NETFramework,Version=v4.5 的引用程序集。要解决此问题,请为此框架版本安装开发人员工具包(SDK/目标包)或者重新定向应用程序。可在 https://aka.ms/msbuild/developerpacks 处下载 .NET Framework 开发人员工具包 LiteDB C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets 1229
处理方法是将LiteDB子项目的.NETFramework设置成4.6,直接更改LiteDB子项目的配置文件,更改TargetFrameworks字段即可。
 
 更改后先重新生成LiteDB子项目,再重新生成解决方案,又出现了两个新error。
 
 看代码是debug用到的变量未定义,直接注释掉相关的代码就可以。
#if DEBUG//WorkflowDesigner.ContextMenu.Items.Add(runthis);//WorkflowDesigner.ContextMenu.Items.Add(runFromHere);
#endif
如果编译过程中遇到了InitializeComponent函数未定义的error,说明VS中没有安装workflow组件。
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 CS0103 当前上下文中不存在名称“InitializeComponent” OpenRPA H:\Code\RPA\openrpa\OpenRPA\Views\WFDesigner.xaml.cs 263 活动
可以通过VS的安装程序来安装workflow组件,安装完毕后该error就可解决
 
 然后重试生成解决方案,34个项目全部通过。
 
将OpenRPA项目设置为启动项,启动调试,就可以看到主界面了,完美解决所有build问题。
 
参考
https://blog.csdn.net/scofild950303/article/details/129179259
 https://mp.weixin.qq.com/s/XEyF1i-nlECYtL3MEhNR-Q
 https://blog.csdn.net/weixin_57291105/article/details/134378495
相关文章:
 
openRPA开源项目源码编译
最近接触到了一个新的领域——RPA,RPA全称Robotic Process Automation,中文名为机器人流程自动化。RPA可以视作一个数字机器人,它可以通过程序来模拟人与软件系统的交互过程,代替人工将大量重复、有规则的计算机操作自动化&#x…...
 
飞书开发学习笔记(八)-开发飞书小程序Demo
飞书开发学习笔记(八)-开发飞书小程序Demo 一.小程序开发概述 1.1 小程序开发概述 飞书开发文档中查看:小程序开发概述 飞书小程序是指可以运行在飞书客户端中的小程序,小程序的一套代码可以适配 Android、iOS、PC 多平台,且用户体验与飞书…...
Unity UI 完全解决方案
Unity UI 完全解决方案 在我学习开发 unity 游戏尝试进行 UI 的构建的过程中,尝试寻找当前 Unity 最为推荐的 UI 构建方式,或者说最优的框架方案。 在中文网里寻找了半天,总感觉很多文章和教程给了方案,但又说不清楚为啥用这个方…...
 
为什么打开idea时,没有启动页面,如何解决?
更新idea2021.2后,当双击idea打开时,发现没有启动界面,直接进入IDEA界面,中间等待时间,让人误以为没有打开idea成功,使得多次点击idea图标。 解决方案就是 在idea界面菜单栏中找到帮助(Help)&a…...
golang - 嵌入静态文件打包
go-bindata - embed结合嵌入静态文件打包可执行二进制文件 ## embed 嵌入静态文件到可执行二进制文件 # 安装go-bindata go get -u github.com/jteeuwen/go-bindata/... # 打包静态文件 go-bindata web/... 执行次命令之后会在项目目录下生成bindata.go文件,示例命令中模板文…...
 
SQL题
[极客大挑战 2019]EasySQL 进行简单的尝试,就知道是单引号的字符型注入 万能密码进行一个简单的尝试 结果就出来了 还是要了解一下原理 输入的是1,形成的sql语句是错误的SELECT*FROM table_name WHERE username1and password123; 第一个单引号和第二个…...
GUN介绍
介绍 GNU(GNU’s Not Unix)是一个自由操作系统项目,名字是一个递归的 GNU’s Not Unix 缩写,其目标是创建一个类Unix的操作系统。 该项目由Richard Stallman于1983年发起,并由自由软件基金会(Free Softwa…...
《Effective C++》条款15
在资源管理类中提供对原始资源的访问 class A {... }; int day(const A* ptr) {... } int main() {shared_ptr<A> ptr(new A);cout << day(ptr) << endl; } 这样写是错误的。因为day函数要求的参数是指针,而你传的实际上是一个对象。 如何解决呢&…...
 
CTFd-Web题目动态flag
CTFd-Web题目动态flag 1. dockerhub注册2. dockerfile编写3. 上传到docker仓库4. 靶场配置5. 动态flag实现 1. dockerhub注册 想要把我们的web题目容器上传到docker仓库中,我们需要dockerhub官网注册一个账号,网址如下 https://hub.docker.com/2. dock…...
 
系列九、对象的生命周期和GC
一、堆细分 Java堆从GC的角度还可以细分为:新生代(eden【伊甸园区】、from【幸存者0区】、to【幸存者1区】)和老年代。 二、MinorGC的过程 复制>清空》交换 1、eden、from区中的对象复制到to区,年龄1 首先,当eden区…...
spark 窗口滑动用于在不同的数据块之间执行操作
在 Scala 中进行分布式执行,例如使用 Apache Spark,可以通过设置窗口滑动来实现不同 RDD 之间的关联处理。窗口滑动是一种窗口操作,用于在不同的数据块之间执行操作。 以下是一个简单的示例,演示如何在 Spark 中使用窗口滑动&…...
 
【数据结构】栈与队列的实现
栈与队列是数据结构中重要的结构, 可以用于解决一些题目 模拟实现时可以增加对于这些结构的理解,也可以巩固我们的语言水平,解决某些题目也会有很好的效果 话不多说 目录 栈的实现结构体的定义:初始化栈:压栈:出栈&am…...
 
HCL设备启动失败——已经解决
摸索了一个多小时,终于搞定了,首先HCL这款软件是需要安装Oracle VM Visual Box的,小伙伴们安装的时候记得点击安装Visual Box; 安装完后显示设备不能启动,然后我根据这个 HCL模拟器中Server设备启动失败的解决办法_hc…...
 
RabbitMQ的幂等性、优先级队列和惰性队列
文章目录 一、幂等性1、概念2、消息重复消费3、解决思路4、消费端的幂等性保障5、唯一 ID指纹码机制6、Redis 原子性 二、优先级队列1、使用场景2、如何添加3、实战 三、惰性队列1、使用场景2、两种模式3、内存开销对比 总结 一、幂等性 1、概念 用户对于同一操作发起的一次请…...
 
Uniapp-小程序自定义导航栏
一、项目背景 制作小程序页面时候发现原生导航栏有一定的高度是没有背景渲染的会出现这种情况 但是我们需要的是 二、原因 小程序的原生导航栏存在。一般可以使用 纯色填充顶部栏 可以直接使用navigationBarBackgroundColor完成 在style中添加 "navigationBarBackgrou…...
 
云课五分钟-08安装Opera成功-仓库中查找对应版本
前篇: 云课五分钟-07安装Opera失败-版本不匹配 视频: 云课五分钟-08安装Opera成功-仓库中查找对应版本 文本: 最佳的途径就是使用系统内置的FireFox。 这么折腾的主要是为了演示安装一个第三方程序可能遇到的问题,并给出一些思…...
 
设计师的好帮手!在线PS网页版工具让创意无限发挥!
PS已经成为设计师必备的基本技能软件。PS版本的不断更新升级使PS功能更加强大。PS可以完成从简单的艺术家到复杂的设计和插画。但与此同时,PS也有设计师经常批评的痛点:大文件运行时内存卡住,位图放大后清晰度低,无穷无尽的快捷键,…...
Android Glide加载transform CenterCrop, CircleCrop ShapeableImageView圆形图并描边,Kotlin
Android Glide加载transform CenterCrop, CircleCrop ShapeableImageView圆形图并描边,Kotlin import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import com.bumptech.glide.load.resource.bitmap.CenterCrop import com.bumptech.glide.…...
 
【docker启动的Jenkins时,遇到时区问题处理】
1、查看容器中的时区 [rootlocalhost jenkins]# docker exec -it jenkins cat /etc/timezone Etc/UTC而本地使用的是Asia/shanghai [rootlocalhost jenkins]# timedatectl | grep Time zoneTime zone: n/a (CST, 0800)###查看 [rootlocalhost jenkins]# cd /usr/share/zoneinf…...
 
MySQL8.0学习笔记
1. CMD命令 1.1 数据库启动与停止 (1) 启动数据库:net start mysql80 (2) 停止数据库:net stop mysql80 1.2 数据库连接与退出 (1) 连接数据库:mysql [-hlocalhost -P3306] -uroot -p[123456] // 本地数据库可省略-h -P (2) 退出数据库…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
 
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
 
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
 
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...
