C#必备技能—项目打包
2024/8/30 14:49:19

C#项目打包 开发好一个软件后,交给客户去使用,这时需要对项目进行打包成一个.exe文件,怎么去做?(共三步) 前提安装扩展:状态栏【扩展】—【管理扩展】,搜索setup,点击安装(安装比较慢,等待半小时服务器在他国)第一步:在项目的管理器中新建一个setup项目(安装扩展后才有)第二步:添加‘项目输出’选择项目主输出到‘Application’(要打包项目Debug的全部文件到‘Application’文件夹,没有的粘贴,重要!重要!重要!)第三步:右击‘Output’文件创建快捷方式文件(重命名软件名

.NET 高效Nuget管理工具(开源)
2024/8/30 14:49:18

我们.开发会引用很多外部Nuget包,多项目、多个解决方案、甚至多个仓库。 简单的Nuget包管理,通过VS就能比较简单处理好。但复杂的场景呢,比如: 1.一个仓库里,有多个解决方案的Nuget包管理 我现在项目就是这样的,针对会议大屏的全家桶软件集代码仓库。这个仓库里,接近30个工具应用软件:2. 多个仓库,多个解决方案、多个项目的Nuget管理 公司产品项目业务比较复杂,抽了很多组件(目前有53个),组件间需要处理好版本冲突,以及因版本依赖需要递增升级自己的版本号这些复杂场景会给开发同学带来操作

C# 使用特性的方式封装报文
2024/8/30 14:49:17

在编写上位机软件时,需要经常处理命令拼接与其他设备进行通信,通常对不同的命令封装成不同的方法,扩展稍许麻烦。 本次拟以特性方式实现,以兼顾维护性与扩展性。思想: 一种命令对应一个类,其类中的各个属性对应各个命令段,通过特性的方式,实现其在这包数据命令中的位置、大端或小端及其转换为对应的目标类型; 然后通过反射对其进行拼包,从而得到一包完整数据。 场景: 将一个轴移动到对应的X,Y,Z位置,为了演示,对其共用一个速度 这个移动到指定位置的命令假设按以下顺序构成(为了展示,草率的命令结构):序号 1 2 3

.NET8 Blazor 从入门到精通:(二)组件
2024/8/30 14:49:15

目录Blaz 组件基础路由导航参数组件参数路由参数生命周期事件状态更改组件事件 Blaz 组件 基础 新建一个项目命名为 MyComponents ,项目模板的交互类型选 Auto ,其它保持默认选项:客户端组件 (AutoWebAssembly): 最终解决方案里面会有两个项目:服务器端项目、客户端项目,组件按存放项目的不同可以分为以下两种组件:服务器端组件:主要用于服务器端渲染(SSR) 被放置在服务器端项目中 适用于不需要实时交互或复杂用户交互的场景客户端组件 (AutoWebAssembly):组

WPF 怎么把checkbox改成开关样式
2024/8/30 14:49:15

先看一下效果吧: isChecked = false 的时候的效果isChecked = true 的时候的效果 然后我们来实现一下这个效果吧 第一步:创建一个空的wpf项目; 第二步:在项目里面添加一个checkboxGridCheckBox HizontalAlignment="Center" IsChecked="True"BderBrush="Black" VerticalAlignment="Center" Content="switch" Background="#FF00ADFF"Grid这

.NET 轻量化定时任务调度 FreeScheduler
2024/8/30 14:49:13

前言 在平时项目开发中,定时任务调度是一项重要的功能,广泛应用于后台作业、计划任务和自动化脚本等模块。 FreeScheduler 是一款轻量级且功能强大的定时任务调度库,它支持临时的延时任务和重复循环任务(可持久化),能够按秒、每天每周每月固定时间或自定义间隔执行(CRON 表达式)。 此外 FreeScheduler 还支持 . Framewk 4.0、. Ce 2.1+ 以及 Xamarin、MAUI 等平台。 本文将介绍 FreeScheduler 的基本功能和使用方法,能够立即上手使用,帮助我们

基于MonoGame重制《俄罗斯方块》游戏
2024/8/30 14:49:11

两年前,我使用C#基于MonoGame编写了一款《俄罗斯方块》游戏,相关介绍可以参考【这篇文章】。最近,使用业余时间将之前的基于MonoGame的游戏开发框架重构了一下,于是,也就趁此机会将之前的《俄罗斯方块》游戏也重制一次,加入了许多我一直打算加入的功能,甚至包括提供跨平台的版本。 先说说这个游戏开发框架,我给它取名为Mfx(MonoGame Fx,Fx是Framewk的缩写,但又不想跟MonoGame Framewk重名),仓储地址是:https:github.comdaxmfx。这个重构过的框架在整

CH03_布局
2024/8/30 14:49:07

第3章:布局 本章目标理解布局的原则 理解布局的过程 理解布局的容器 掌握各类布局容器的运用理解 WPF 中的布局 WPF 布局原则 ​ WPF 窗口只能包含单个元素。为在WPF 窗口中放置多个元素并创建更贴近实用的用户男面,需要在窗口上放置一个容器,然后在这个容器中添加其他元素。造成这一限制的原因是 Window 类继承自 ContentControl 类,在后续章节中将进一步分析ContentControl类。 布局过程 ​ WPF 布局包括两个阶段:测量(measure)阶段和排列(arange)阶

.NET辅助角色服务入门简介
2024/8/30 14:49:04

在日常开发中,并不是所有的功能都是用户可见的,还在一些背后默默支持的程序,这些程序通常以服务的形式出现,统称为辅助角色服务。今天以一个简单的小例子,简述基于.开发辅助角色服务的相关内容,仅供学习分享使用,如有不足之处,还请指正。 概述 根据项目需求不同,创建长时间运行的服务的原因有很多,例如:处理 CPU 密集型数据,比如文件检索或图片识别等。 在后台对工作项进行排队,比如:批量发送短信或邮件等操作。 按计划执行基于时间的操作,比如:间隔2秒执行一次某操作。后台服务处理通常不涉及用户界面 (UI),

CH01_WPF概述
2024/8/30 14:49:02

第1章:WPF概述 本章目标了解Windows图形演化 了解WPF高级API 了解分辨率无关性概念 了解WPF体系结构 了解WPF 4.5WPF概述​ 欢迎使用 Windows Presentation Foundation (WPF) 桌面指南,这是一个与分辨率无关的 UI 框架,使用基于矢量的呈现引擎,构建用于利用现代图形硬件。 WPF 提供一套完善的应用程序开发功能,这些功能包括 Extensible Application Markup Language (XAML)、控件、数据绑定、

.NET 7 + Vue 权限管理系统 小白快速上手
2024/8/30 14:49:00

前言 今天给大家推荐一个超实用的开源项目《. 7 + Vue 权限管理系统 小白快速上手》,DncZeus的愿景就是做一个. 领域小白也能上手的简易、通用的后台权限管理模板系统基础框架。 不管你是技术小白还是技术大佬或者是不懂前端Vue 的新手,这个项目可以快速上手让我们从0到1,搭建自己的通用后台权限管理系统,掌握后台权限管理系统的搭建技巧以及系统基础框架。 它不仅涵盖了从环境搭建到核心功能实现的全过程,而且特别注重让初学者也能轻松上手。 无论你是希望通过实战来加深对新技术的理解,还是想要为自己的项目升

.NET 8 中利用 MediatR 实现高效消息传递
2024/8/30 14:48:59

前言 MediatR 是 . 下的一个实现消息传递的库,轻量级、简洁高效,用于实现进程内的消息传递机制。它基于中介者设计模式,支持请求响应、命令、查询、通知和事件等多种消息传递模式。通过泛型支持,MediatR 可以智能地调度不同类型的消息,非常适合用于领域事件处理。 在本文中,将通过一个简单的示例来介绍如何使用 MediatR 库在 . 8 项目中处理命令。我们将定义一个命令、一个处理器以及一个用于发送命令的服务,演示如何发送一个命令并处理它。 准备工作 1、创建项目 创建一个新的 . 8 WebAPI

海康网络相机封装库分享
2024/8/30 14:48:58

前言 最近做项目过程中,使用到了海康相机,官方只提供了CC++的SDK,没有搜寻到一个合适的封装了的C#库,故自己动手,简单的封装了一下,方便大家也方便自己使用和二次开发 项目地址:https:github.commartixjohnHikvisionwkCameraSdkFCsharp 项目结构 ├─Dlls │ ├─Native │ HCSDK.cs │ ├─ CameraDevice.cs │ ...项目很简单,主要就提供了两个类:一个是CameraDevice.cs:相机API使用

wpf 如何写一个圆形的进度条
2024/8/30 14:48:56

先看一下效果吧调用代码如下local:CycleProgressBar Width="100" Height="100" Background="#FFF68986" Feground="#FFFA1F09"Maximum="100" Minimum="0" Value="20" IsIndeterminate="False"然后下面就来实现一下这个效果 第一步:先创建一个空的wpf项目 第二步:添加一个自定义控件,取名为CycleProgressBar添加完以后,vs会自动生成一个类和一个Themes文

推荐一个优秀的 .NET MAUI 组件库
2024/8/30 14:48:53

前言 . MAUI 的发布,项目中可以使用这个新的跨平台 UI 框架来轻松搭建的移动和桌面应用。 为了帮助大家更快地构建美观且功能丰富的应用,本文将推荐一款优秀的 . MAUI 组件库MDCMAUI,它不仅提供了丰富的 UI 组件,而且易于集成和使用。 通过本文的介绍,希望能够帮助大家在开发过程中节省时间并提升应用的用户体验。 组件介绍 MDCMAUI 是一个专为 . MAUI 开发的组件库,为每个平台提供一致的视觉效果。 该库开箱即用,提供了丰富的 UI 组件,包括按钮、卡片、导航、开关、进度条等,可以

C#项目—模拟考试
2024/8/30 14:48:52

C#模拟考试软件 开发了一个《模拟考试》的小软件,此小软件练习的目的主要是为了体会编程思想,深度理解高内聚、低耦合,掌握编程思维逻辑的大招,告别垃圾代码,重点体会编程之美,练习时长30分钟;开发一个项目之前,切记不要打开程序就写代码,首先要做的就是分析项目,从项目的架构开始思考,软件要实现什么功能(思考UI界面布局);数据从哪里获取?(数据库、文本文件、通讯接口...);重点思考项目对象、功能有哪些?(对象的属性成员、方法功能,之间的关系...),以此项目为例,思维导图如下:No1. 软件实现的功能有哪些

通过 C# 将数据写入到Excel表格
2024/8/30 14:48:51

Excel 是一款广泛应用于数据处理、分析和报告制作的电子表格软件。在商业、学术和日常生活中,Excel 的使用极为普遍。本文将详细介绍如何使用免费.库将数据写入到 Excel 中,包括文本、数值、数组、和DataTable数据的输入。C# 在Excel单元格中写入文本、或数值 C# 在Excel工作表中写入数组 C# 在Excel工作表中写入DataTable数据表 本文用到的免费. Excel库为 Free Spire.XLS f .。 该库可以在Visual Studio NuGet程序包管理器中

Aspire8一文通
2024/8/30 14:48:50

Aspire8一文通0、简介 微软Aspire是微软今年推出的一个全新的平台无关、语言无关的新框架,它的设计目的是简化云原生应用的开发、部署和管理过程。Aspire的读音是[əˈspaɪər],它的意思是渴望(成就)有志(成为),利用它你可以构建新应用程序或将云原生功能添加到现有的应用程序,或者将.应用部署到云中的生产环境,. Asprie都可以帮助你更快地实现目标! 官方描述里用了一个词叫opinionated,这个词很有意思,如果直译过来就是自以为是的,这挺微软,好像这二十年微软在技术领域挺opini

wpf 如何7步写一个badge控件
2024/8/30 14:48:50

首先看一下效果: 任意控件可以附加一个文字在控件的右上角,并带有红色背景 第一步,新建一个空的wpf项目: 第二步,创建一个类,取名为badge: 第三步,将badge的父类设置成 System.Windows.Documents.Adnerpublic class Badge : Adner{public Badge(UIElement adnedElement) : base(adnedElement){}}里面的adnedElement表示badge后面附加的对象 关于Adner这个类的说明,微软

.NET 8 跨平台高性能边缘采集网关
2024/8/30 14:48:48

前言 在物联网(IoT)和工业自动化领域,边缘计算设备扮演着至关重要的角色。边缘采集网关作为连接物理世界与数字世界的桥梁,负责收集传感器数据并将数据传输到云端或本地数据中心进行处理。 本文将介绍一款基于 . 8 的跨平台高性能边缘采集网关的开源项目。希望通过这个项目能够帮助大家搭建和部署高效的边缘采集解决方案。 项目介绍 基于. 8 的跨平台高性能边缘采集网关,单机采集数据点位可达百万。 ThingsGateway 是C#开发的一款边缘采集网关,核心分为四大部分。通道通道,实际上相当于一个实际的通讯链路,

编程技巧 --- 远程调试
2024/8/30 14:48:46

引言 最近在做的项目上做了一些性能优化的工作,用到了 Visual Studio 远程调试,所以本篇文章整理一下远程调试技巧。 首先,了解一下 Visual Studio远程调试是什么?Visual Studio 的远程调试功能允许在本地调试远程计算机上运行的应用程序。用远程调试,可以在本地计算机上设置断点、查看变量和监视程序执行,能更轻松地诊断和解决问题。 其次 ,远程调试能够做什么? 这对于调试在不同环境中运行的应用程序非常有用,例如在生产服务器上或是在其他设备上,可以更高效地解决问题并提高开发效率。

dotnet C# 分享基础 for 循环的写法
2024/8/30 14:48:44

本文来和大家聊聊在 dot C# 里面的基础的 f 循环语法的写法使用 f 作为循环的写法是在编程里面常用的代码写法。比如说我有一个名为 Foo 的类型,这个类型提供了一个名为 GetCount 的方法,这个方法可以缓慢的获取 Foo 里面的一个代表数量的值。且在 Foo 类型里面提供了索引器,可以根据传入的下标序号返回一个字符串,例子代码如下 class Foo {public string this[int index]{get{return "Hello" + index}}public int G

C#项目—彩票选号
2024/8/30 14:48:43

C#彩票选号软件 今天做了一个彩票选号的小软件,将学到的知识点总结如下(新手小白,多提意见); 1.写程序的思路实体类(属性、方法)No1. 随机数组集合(属性) No2. 创建集合对象(构造方法) No3. 生成随机数组(实例方法) No4. 生成多组随机数组(实例方法) No5. 遍历随机数组生成号码列表(实例方法)主程序调用类方法No1. 创建类对象(调用类中的属性、方法实现相应功能) No2. 传递界面控件属性值到数组元素并添加到类对象中 No3. 界面展示控件添加类方法(列表添加随机数组)2.学

.NET 窗口/屏幕录制
2024/8/30 14:48:42

窗口屏幕截图适用于截图、批注等工具场景,时时获取窗口屏幕图像数据流呢,下面讲下视频会议共享桌面、远程桌面这些场景是如何实现画面录制的。 常见的屏幕画面时时采集方案,主要有GDI、WGC、DXGI。 GDI GDI(Graphics Device Interface)就是使用user32下WindowsAPI来实现,是 Windows 操作系统中最早、最基础的图形设备接口,满足所有windows平台。屏幕窗口截图可以详见: . 窗口屏幕截图 唐宋元明清2188 博客园 (cnblogs.com) 录制屏

.NET 8 + Blazor 多租户、模块化、DDD框架、开箱即用
2024/8/30 14:48:41

前言 基于 . 8 的开源项目,主要使用 WebAPI + Blaz 支持多租户和模块化设计,DDD构建。可以帮助我们轻松地搭建起一个功能完善的Web应用程序。除了帮助你快速构建应用程序之外,项目也可以当做学习资料。我们可以从中了解到多租户、CQRS、DDD架构、云部署、Docker容器化等等前沿技术。 项目简介 dotstarterkit 是一个基于 . 8 的开源项目,它采用了Clean Architecture原则,支持多租户和模块化设计。此项目是一个开箱即用的解决方案,非常适合快速开发Web应用程

记一次 .NET某环境监测系统 崩溃分析
2024/8/30 14:48:40

一:背景 1. 讲故事 前些天有位朋友找到我,说他们的程序崩溃了,也自己分析了下初步结果,让我帮忙再确认下,既然让我确认,那就开始dump分析之旅吧。 二:WinDbg 分析 1. 为什么会崩溃 windbg 有一个强大之处就是带有一个自动化的分析命令 !analyze v 可以帮助我们快速的分析,输出如下:0:000 !analyze v

.NET 与 LayUI 实现高效敏捷开发框架
2024/8/30 14:48:38

前言 WaterCloud 是一个集成了 LayUI 的高效敏捷开发框架,专为 . 开发者设计。 它不仅支持多种 . 版本(. 4.5、. Ce 3.1、. 5、. 6),还内置了丰富的功能,如权限管理、流程表单设计以及多数据库支持下的多租户架构。使用了 M(SqlSugar 和 Chloe ) 能够轻松应对复杂的数据处理需求。 WaterCloud 基于ASP. 6.0 MVC + API + SqlSugar + LayUI的框架,帮我们解决. 开发中的重复工作,提升开发效率。 该框架采用了主流的架构

记一次 .NET某智慧出行系统 CPU爆高分析
2024/8/30 14:48:37

一:背景 1. 讲故事 前些天有位朋友找到我,说他们的系统出现了CPU 100%的情况,让我帮忙看一下怎么回事?dump也拿到了,本想着这种情况让他多抓几个,既然有了就拿现有的分析吧。 二:WinDbg 分析 1. 为什么会爆高 既然说是 100%,作为调试者得拿数据说话,可以使用 !tp 来观测一下。0:000:x86 !tp CPU utilization: 100% Wker Thread: Total: 382 Running: 382 Idle: 0 MaxLimit: 8191 MinLimi

使用dapper,因错误SQL字串拼接方式 导致的内存泄漏
2024/8/30 14:48:34

作者就职的公司在19年就开始使用. ce并且部署到Linux上,这些年也遇到不少问题,有些问题都是使用土方法去解决,后面再慢慢写吧,准备将遇到的问题写成一个系列。 前情提要本次的项目是20年上线的储值卡系统,上线后发现内存缓慢增长(半个月涨到4G多),一直没有找到原因就让运维小伙伴设置每半个月重启来解决这个问题,但是公司的发展增长的内存越来越大,不得不去学习一些知识去解决这个问题了。这就有了今天这篇博文。让运维小伙伴帮忙拿到dump,开始分析。(如何从Linux拿到dump?参考黄老师(一线码农)的博文

Docker部署.netCore6
2024/8/30 14:48:11

Docker部署.Ce6 第一步:在项目添加Docker支持第二步:选择Windows(如果是linx系统就选择linx)和Dockerfile第三步:生成Docker默认文件 把默认代码修改第四步:修改Dockerfile文件属性(如果不修改则会导致发布的时候Docker文件没有一起发布)第五步:把项目发布到文件夹 在发布的文件夹里面会有Dockerfile文件夹输入 docker build t info . (info为起的名称) 最后英文状态的点不能省略输入 docker image