C# WPF上位机开发(软件的发布和部署)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        软件编译完成之后,本地测试完之后,一般都要发布和部署到客户的电脑上面。客户电脑的配置未必和开发的电脑是一样的,所以实际部署的过程中可以会遇到很多的问题。甚至于说,简单的配置错误,都要花费大家很多的精力和时间去查找和订正。所以软件开发好只是第一步而已,能够快速、正确地去部署和配置也是重要的一个环节。

        软件发布或者部署,不仅仅是把IDE中Debug目录或者Release目录里面的内容,完整拷贝到客户的电脑上,而且还要做版本的匹配、参数的设置以及配套软件的安装。这个流程是任何时候都少不了的。不然,软件其实很难比较稳定地运行起来。

1、同步好.net framework版本

        不同的windows系统,支持的.net framework版本也不一样。这个时候,不同os上面能够最好安装相同版本的.net framework。如果不清楚相关版本,可以直接在VS IDE上面去查找,

2、记录好第三方库的版本

        由于使用了NuGet工具,我们可以下载到很多好用的第三方库,不过这个时候大家最好留意一下相关的第三方库的版本号。因为这些第三方库在质量上面其实是良莠不齐的,如果遇到相关问题没有办法解决的话,一定要及时升级相关的版本,甚至可能需要自己亲自下场去debug。另外,个人还是建议比较核心的第三方库尽量用c/c++语言去编写,这样可以降低一点被破解的风险。

3、数据库的安装

        很多上位机的安装是需要数据库支持的。如果是sqlite这种小型的数据库,那还比较简单。如果本身的数据库是mysql、oracle这种中大型数据库,那么对应数据库的版本信息最好也和开发电脑中的版本保持一致,这样可以减少不必要的麻烦。

4、配置文件的设置

        软件切换到新的电脑上面,很多配置都和之前是不一样的。这里面包括了ip、端口、功能、目录地址、用户名、密码等等,这部分一定要去认真分析,不要怕麻烦。因为配置文件本身而遇到的问题,几乎每一次部署的时候都会发生。而且在客户批量使用之前,最好先小规模使用,注意灰度测试,慢慢提升测试压力和测试强度,让上位机软件经受住考验之后,这才有可能长期、稳定、可靠地去运行。

        另外,大家还需要注意的是,不光业务软件需要配置,很多第三方库也需要配置。如果这方面内容确实比较多的话,一定要有写一个建议文档,或者是推荐方案。这样可以保证,不管谁拿到软件,都可以快速地把软件部署起来、使用起来。

5、log的设置

        本来log的设置,完全可以放在配置文件一节来说明的。但是实际上,log配置十分重要。它不仅仅是目录名、文件名修改这么简单。更重要的是,一个程序要想稳定地运行,在这之前肯定会遇到各种各样的问题。这是规律。而要解决这些问题的话,就肯定离不开log的帮助。当然除了闪退需要一些特殊的方法和手段去处理之外,大部分的问题、或者说一般的问题都是可以通过log来处理的。所以,不管什么时候,大家都要高度重视log的重要性。

        不光如此,我们的上位机很多时候还需要和其他同级供应商进行数据沟通,相互之间的联调肯定是少不了的。这个时候,log文件不光可以帮助自己定位错误,还能在关键的时候撇清自己的责任,成为自己最有力的证据。有过类似经验的同学,肯定可以明白刚刚说的这些内容代表着什么样地含义。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

02 特征点提取器 ORBextractor

文章目录 02 特征点提取器 ORBextractor2.0 基础知识2.0.1 图像金字塔2.0.2 ORB 特征点的关键点和描述子 2.1 构造函数:ORBextractor()2.2 构建图像金字塔 ComputePyramid()2.3 提取特征点并筛选 ComputeKeyPointsOctTree()2.4 筛选特征点 DistributeOctTree()2.5 计…

springboot+vue前后端分离的社区养老服务管理管理系统(有文档)

springbootvue前后端分离的社区养老服务管理管理系统。系统功能齐全,配置完成可运行,有文档,演示视频,配置说明,数据库文件,虚拟产品下单不退不换! 技术:springbootmybatisplusmysql…

NPOI 导出Excel提示内容有问题的解决方法

NPOI导出Excel 使用Microsoft Excel 打开提示内容有问题,如下: 原因是:在使用NPOI导出excel时,获得 workbook.Write(ms)生成的 MemoryStream后,使用了 ms.GetBuffer()返回文件内容,导致生成的 Excel文件结尾…

【读论文】PSFusion

【读论文】Rethinking the necessity of image fusion in high-level vision tasks: A practical infrared and visible image fusion network based on progressive semantic injection and scene fidelity 介绍解决的问题网络架构整体架构稀疏语义感知分支( spars…

Jmeter 性能测试 —— 评估一个系统TPS与并发数!

问题:性能压测,如何评估一个系统的TPS和并发数? 1、对于新系统 由业务部门或开发人员预估交易量和TPS指标 可以参考公式:并发用户 在线用户数 * 10%。 当一个系统还没有上线时,我们可以预判的是这个系统准备要给多…

PCL配置记录

PCL配置记录 1. Windows10vs2019pcl win10vs2019pcl 1.11.1 1.下载与安装 https://github.com/PointCloudLibrary/pcl/releases ) 双击exe安装 注意: ( ) 解压 “pcl-1.11.0-pdb-msvc2019-win64.zip”,将解压得到的文件夹中的内容添加“…\PCL…

云手机解决Tik Tok运营难题

对于海外营销的企业来说,Tik Tok是不可错过的宣传平台。本文将介绍Tik Tok运营过程中会遇到的几个问题,以及如何通过海外云手机解决。 Tik Tok运营的主要问题 1、高昂的硬件成本和封号风险 很多企业会选择矩阵式营销,但为了不封号每个账号都…

ansible的脚本:playbook剧本

(一)playbook的组成部分 tasks 任务,包含要在主机上执行的操作,使用模块定义这些操作,每一个任务都是一个模块的调用 variables 变量,存储和传递数据(和shell脚本中的变量是一个意思&#xf…

理解Java中锁的应用

一、死锁 1.1 定义: 当线程 A 持有独占锁a,并尝试去获取独占锁 b 的同时,线程 B 持有独占锁 b,并尝试获取独占锁 a 的情况下,就会发生 AB 两个线程由于互相持有对方需要的锁,而发生的阻塞现象&#xff0c…

雄雄的小课堂微信机器人流程图

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。 最近改造了下微信机器人,新版本还未上线,预计下周一(12.25)左右能上线第一版。 下面是改造之后的流程图 大家可以看看,有疑问可…

【计算机视觉中的多视图几何系列】深入浅出理解针孔相机模型

温故而知新,可以为师矣! 一、参考资料 《计算机视觉中的多视图几何-第五章》-Richard Hartley, Andrew Zisserman. 二、针孔模型相关介绍 1. 重要概念 1.1 投影中心/摄像机中心/光心 投影中心称为摄像机中心,也称为光心。投影中心位于一…

Ubuntu及Docker 安装rabbitmq

安装ubuntu 前 先暴露端口: 5672 用于与mq服务器通信用 15672 管理界面使用的端口 docker命令:docker run -itd --name ubuntu -p 5672:5672 -p 15672:15672 ubuntu 进入docker : docker exec -it ubuntu /bin/bash 步骤: 1. 更新安装源…

算法学习系列(九):离散化

目录 引言一、离散化概念二、离散化模板三、例题四、测试 引言 这个离散化我的理解就是你如果要用到数组的下标进行存数,会有多个询问针对下标进行操作,然后这个下标特别的大,而且存的数也是特别的分散,举个例子就是有三个数&…

VScode 工作区配置 和 用户配置

一、工作区配置 通常不同的项目都有不同的配置,我一般都是使用eslint和prettier一起用,所以经常会有这几个文件: 这里简单介绍一下这几个文件的作用吧。 1.vscode文件夹下 一般有两个文件,extensions.json和settings.json。 e…

07 Vue3中的三元表达式

概述 三元表达式时JavaScript中比较常用的一种原生语法,能够在一行代码中实现if-else的分支逻辑。 在Vue的双大括号中,我们也可以使用三元表达式去实现一些简单的条件渲染。 基本用法 我们创建src/components/Demo07.vue,先尝试一下三元表…

【泛型中K T V E? Object等分别代表什么含 义】

✅ 泛型中K T V E? Object等分别代表什么含义 ✅ 典型解析✅代码示例 ✅ 典型解析 E - Element (在集合中使用,因为集合中存放的是元素) T-Type (Java 类) K- Key (键) V - Value (值) N - Number (数值类型) ? - 表示不确定的iava类型 (无限制通配符类型) …

linux 中 C++的环境搭建以及测试工具的简单介绍

文章目录 makefleCMakegdb调试 与 coredumpValgrind 内存检测gtest 单元测试 makefile 介绍 安装 : sudo apt install make makefile 的规则: 举例说明 包括:目标文件 、 依赖文件 、 生成规则 使用 : make make clean CMake : CMake是一个…

OpenHarmony 4.0 Release发布,同步升级API 10

不久之前,OpenHarmony 正式发布了4.0 版本,开发套件也同步升级到 API 10。相比 3.2 Release 版本,4.0 版本新增 4000 多个 ArkTS API,应用开发能力更加丰富;HDF 新增 200 多个 HDI 接口,硬件适配更加便捷&a…

浅谈在线监测系统与配电能效平台在供水水厂的应用

贾丽丽 安科瑞电气股份有限公司 上海嘉定 201800 【摘要】针对自来水厂工艺老化资金有限的问题,设计水厂在线监测系统,采用安科瑞,对原水滤后水、出厂水进行采样分析,并通过基于组态的上位机系统实现水质数据的实时监测。该系统…

听GPT 讲Rust源代码--src/tools(23)

File: rust/src/tools/clippy/rustc_tools_util/src/lib.rs 在Rust源代码中,rust/src/tools/clippy/rustc_tools_util/src/lib.rs文件的作用是为Clippy提供了一些实用工具和辅助函数。 该文件中定义了VersionInfo结构体,它有三个字段,分别为m…