string.Format 的功能非常有限,因此需要使用 SmartFormat.NET 框架来完成丰富的字符串插值功能。它可以使用类似于字符串的最小化、直观的语法将各种数据源格式化为字符串。格式。所有格式化都在运行时进行。SmartFormat 使用扩展来提供命名占位符、本地化、多元化、性别结合以[......] 继续阅读

2024年4月10日 0条评论 236点热度 0人点赞 痴者工良 阅读全文

整体逻辑 ASP.NET Core gRPC 的使用很简单,服务注册和中间件只有两行代码。 var builder = WebApplication.CreateBuilder(args); // Add services to the container.[......]继续阅读

2024年4月3日 0条评论 258点热度 0人点赞 痴者工良 阅读全文

AI is becoming increasingly popular, so I am writing a simple introductory tutorial for readers in the hope that they will enjoy it. Many people want[......] 继续阅读

2024年3月25日 0条评论 753点热度 1人点赞 痴者工良 阅读全文

为什么要写这个教程 在毕业之后,读者写过了大量的文章和开源项目,正是坚持一边学习一边输出,所以笔者最终从一个生菜鸡进化为一个熟菜鸡。 在程序员的成长中,我们会在思路,如何学习、如何进步,比如要成长为一个架构师,需要具备什么样的能力。比如说技术能力,技术能力是最核心的基础,那么我们技术上要达到哪种程度[......] 继续阅读

2024年3月21日 2条评论 912点热度 4人点赞 痴者工良 阅读全文

初始化 KernelMemory 启动时,会检查配置,即使当前代码没有使用到相关功能。 var hasQueueFactory = (this._memoryServiceCollection.HasService<QueueClientFactory>());[......]继续阅读

2024年3月13日 0条评论 456点热度 1人点赞 痴者工良 阅读全文

万字长文学会对接 AI 模型:Semantic Kernel 和 Kernel Memory,工良出品,超简单的教程 目录: 配置环境 部署 one-api 配置项目环境 模型划分和应用场景 聊天 提示词 引导 AI 回复 指定 AI 回复特定格式 模板化提示 聊天记录 函数和插件 直接调用插件[......] 继续阅读

2024年2月29日 0条评论 636点热度 1人点赞 痴者工良 阅读全文

背景:最近使用 Debezium 做数据库数据监听工具,然后使用 C# 开发管理工具对接 kafka 获取增量同步的数据,这个 C# 管理工具需要支持自定义下游数据库映射,因此再新增加映射关系时需要批量将上游数据全量同步到下游,然后才能从 Kafka 中开始使用增量数据同步,以便保持上下游的数据一致[......] 继续阅读

2023年12月21日 0条评论 1182点热度 0人点赞 痴者工良 阅读全文

[TOC] 在业务开发中,使用数据库事务是必不可少的。而开发中往往会使用各种 ORM 执行数据库操作,简化代码复杂度,不过,由于各种 ORM 的封装特性,开发者的使用方式也不一样,开发者想要了解 ORM 对事务做了什么处理是比较难的。因此,本文介绍数据库事务基础、Ado.net 事务、如何封装 Db[......] 继续阅读

2023年12月12日 0条评论 731点热度 0人点赞 痴者工良 阅读全文

继承 DiagnosticAnalyzer 。 检测 async void 注册监听器: public override void Initialize(AnalysisContext context) { context.ConfigureG[......]继续阅读

2023年11月23日 0条评论 812点热度 0人点赞 痴者工良 阅读全文

A 项目中含有中文字符串目录路径,导致使用 Jenkins 时调用 Powershell 编译报错。 无论是设置环境变量还是使用 chcp 命令等,均无效。 这是因为默认 csproj 是使用 utf8-bom 保存的。 这样的特性会导致在本地电脑开发环境中正常,但是在服务器中编译就会报错。 需要[......] 继续阅读

2023年11月23日 0条评论 666点热度 0人点赞 痴者工良 阅读全文

MainWindow 窗口使用 Blazor WebView2: <Border Margin="0,0,0,0" Background="Transparent" BorderThickness="0"[......]继续阅读

2023年11月22日 0条评论 956点热度 0人点赞 痴者工良 阅读全文

先引入 PInvoke.net 或 Microsoft.Windows.CsWin32,请参考: https://www.whuanle.cn/archives/21436 定义两个获取屏幕去掉任务栏的长宽高函数: public static int GetSystemMetrics[......]继续阅读

2023年11月22日 0条评论 518点热度 0人点赞 痴者工良 阅读全文

PInvoke.net 是官方用于操作 Win32 API 的库,但是已经归档了。也就是后续需要使用 Microsoft.Windows.CsWin32 来操作 win32 API。 但是 Microsoft.Windows.CsWin32 比较麻烦,因为 Microsoft.Windows.C[......] 继续阅读

2023年11月22日 2条评论 1018点热度 0人点赞 痴者工良 阅读全文

如图: 有两种配置形式。 一种是在项目中(可以启动的项目,类库不行)配置模板文件,另一种是在项目编译之后配置。 第一种方法在项目中新建一个 runtimeconfig.template.json 文件。 示例如下: { "runtimeOptions": { "configProper[......]继续阅读

2023年11月22日 0条评论 586点热度 0人点赞 痴者工良 阅读全文

新建一个项目,项目只能使用 netstandard2。 其 csproj 文件完整内容如下: <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netst[......]继续阅读

2023年11月21日 0条评论 452点热度 0人点赞 痴者工良 阅读全文

您大可以相信工良出品。本文从 C# 角度开始一点点编码,逐步了解 RabbitMQ 编程的各种细节,学会消息处理机制和多种场景下的开发细节。虽然文章比较长,但是不会啰啰嗦嗦说一堆理论。

2023年11月16日 0条评论 957点热度 2人点赞 痴者工良 阅读全文

包 CommunityToolkit.Mvvm 主要用于代码生成,能够为用户减少编写大量的代码,在 WPF 中可以实现 MVVM 设计模式,降低代码复杂度。 引入项目包: <PackageReference Include="CommunityToolkit.Mvvm" Versio[......]继续阅读

2023年11月2日 0条评论 1060点热度 0人点赞 痴者工良 阅读全文

引入三个库: <ItemGroup> <PackageReference Include="bblanchon.PDFium.Win32" Version="122.0.6259" /> <PackageReference Inc[......]继续阅读

2023年10月25日 3条评论 1564点热度 0人点赞 痴者工良 阅读全文

图片转换需要安装:https://ghostscript.com/ 引入: <ItemGroup> <PackageReference Include="Magick.NET-Q16-AnyCPU" Version="13.4.0" />[......]继续阅读

2023年10月25日 0条评论 877点热度 0人点赞 痴者工良 阅读全文

自家的软件安装后,需要更新,更新文件完成后还需要修改注册表中关于程序的版本号。 软件安装后,会被写入注册表中。 所以只需要修改注册表的 DisplayVersion 即可,不同的程序可能还需要修改其它属性,例如 Version、DisplayName。 修改注册表可能需要管理员权限,这要看软件是[......] 继续阅读

2023年10月23日 0条评论 680点热度 0人点赞 痴者工良 阅读全文
123459