lindexi

林德熙 - 微软最具价值专家和 .NET 基金会成员

林德熙

博客导航

本文记录我写的博客和我收集的博客

聊聊 dotnet 7 对 bool 与字符串互转的底层性能优化

本文也叫 跟着 Stephen Toub 大佬学性能优化系列。大家都知道在 .NET 7 有众多的性能优化,其中就包括了对布尔和字符串互转的性能优化。在对布尔和字符串的转换的性能优化上,有着非常巧妙的思路,值得写篇博客记录

Windows 调试工具课程

Windows 调试工具课程——在软件万种死法中调试出原因

dotnet 读 WPF 源代码笔记 从 WM_POINTER 消息到 Touch 事件

本文记录我读 WPF 源代码的笔记,本文将介绍在 WPF 底层是如何从 Win32 的消息循环里获取到的 WM_POINTER 消息处理转换作为 Touch 事件的参数

dotnet 源代码生成器分析器入门

本文将带领大家入门 dotnet 的 SourceGenerator 源代码生成器技术,期待大家阅读完本文能够看懂理解和编写源代码生成器和分析器

WPF 从裸 Win 32 的 WM_Pointer 消息获取触摸点绘制笔迹

本文将告诉大家如何在 WPF 里面,接收裸 Win 32 的 WM_Pointer 消息,从消息里面获取触摸点信息,使用触摸点信息绘制简单的笔迹

Roslyn 简单实现代码智能提示补全功能

相信有很多伙伴热衷于编写 IDE 应用,在 dotnet 系下,通过 Roslyn 友好的 API 和强大的能力,实现一个代码智能提示是非常简单的事情。本文将和大家简单介绍一下如何使用 Roslyn 实现简单的代码智能提示补全功能

dotnet C# 从控制台开始 关联 Win2D 和 WinUI 3 应用

本文将告诉大家如何从最简单的控制台开始搭建,让 Win2D 和 WinUI 3 关联起来,让 Win2D 可以将内容渲染到 WinUI 3 应用上

dotnet 9 通过 AppHostRelativeDotNet 指定自定义的运行时路径

进行框架依赖发布的时候,应用程序需要有 dotnet runtime 运行时才能跑起来。在 dotnet 9 之前,通常都是需要安装到系统的 Program File 文件夹下的全局 dotnet 运行时的支持。在 dotnet 9 时,引入了 AppHostRelativeDotNet 机制,允许开发者自定义依赖框架发布的应用使用的 dotnet 运行时路径

WPF 性能测试

本文收藏我给 WPF 做的性能测试。在你开始认为 WPF 的性能存在问题的时候,不妨来这篇博客里找找看我做过的测试。我记录的测试都是比较纯净的测试项目,没有业务逻辑的干扰,写法也正常,可以更加真实反映 WPF 的性能,减少因为奇怪的业务逻辑以及逗比的写法的影响

WPF 从 WriteableBitmap 里获取到渲染线程使用的 IWICBitmap 对象

在 WPF 框架底层里面,对 WriteableBitmap 的实现是有双份内存,具体实现放在 CSwDoubleBufferedBitmap 里面。表层的内存是一个数组,里层内存是 IWICBitmap 对象,渲染时将使用 IWICBitmap 对象加入到渲染管线

dotnet 读 WPF 源代码笔记 WriteableBitmap 的渲染和更新是如何实现

在 WPF 框架提供方便进行像素读写的 WriteableBitmap 类,本文来告诉大家在咱写下像素到 WriteableBitmap 渲染,底层的逻辑

msbuild Roslyn 行为详解

本文来告诉大家 msbuild Roslyn 的行为,本文非新手友好

Roslyn 打包自定义的文件到 NuGet 包

在使用 sdk 格式的项目文件支持快速进行打包,但使用这个方式打包的时候将默认只带程序集输出文件,而没有带依赖的文件。本文告诉大家如何在打包的时候加上需要放在包里面的文件

开源项目

这是我收藏的开源项目

dotnet 警惕设置 StreamReader 的 BaseStream 的 Position 属性

使用 StreamReader 的过程中,如果设置了 StreamReader 的 BaseStream 的 Position 属性,由于 StreamReader 内部缓存的影响,可能会在缓存消耗完成之前,依然是读取缓存的值,导致行为不符合预期

Avalonia 笔迹渲染太慢了 用 WPF 做加速层

由于 Avalonia 的渲染延迟非常高,而笔迹应用对渲染实时要求高,我尝试在 Windows 下对 Avalonia 做了很多优化尝试,但都距离 WPF 随便写个笔迹应用慢很多。既然 Avalonia 优化不动,那就用 WPF 做加速层

Avalonia 将 DrawingImage 保存到本地文件的方法

本文将和大家演示如何在 11.2.0 的 Avalonia 框架上,将 Avalonia.Media.DrawingImage 保存存放为本地图片文件的方法

Office 使用 OpenXML SDK 解析文档博客目录

本文收集 Office 解析相关博客

dotnet OpenXML 演练 设置 PPT 单元格垂直合并

本文将告诉大家如何在使用 2.20 版本的 OpenXML SDK 对 PPT 里面的单元格进行垂直合并

解决麒麟 Kylin 系统提示 IP 冲突 无法正常连接到网络

麒麟 Kylin 系统插入网线但没有网,通知中心里面有网络设置工具的网络提示消息,消息内容是 IP 冲突,无法正常连接到网络

Windows 11 在 GitLab Runner 服务内找不到 SMB 挂载的 NAS 文件夹

我在 Windows11 上,用服务的方式注册了 GitLab Runner 工具,让 GitLab Runner 工具调度代码执行。在运行过程中,发现我在主机上采用 SMB 挂载的 NAS 文件夹找不到

dotnet X11 的多屏触摸行为测试

故事的背景是我在给 Avalonia 加上触摸尺寸的支持时,代码审查过程中大佬提出了在多屏上的 X11 行为问题,为此我找了两个触摸屏进行测试 X11 的多屏触摸行为。由于我的设备有限,本文只记录我所测试到的行为

Roslyn 分析器 INamedTypeSymbol 的 AllInterfaces 包含类型全部继承接口

本文将记录和测试 Microsoft.CodeAnalysis.INamedTypeSymbol 的 AllInterfaces 属性能获取的指定类型的接口范围

dotnet 打包 NuGet 的配置属性大全整理

本文整理 dotnet 打包 CBB 组件为 NuGet 包时可以使用的配置的各个属性

dotnet 代码调试方法

本文将会从基础到高级,从简单到复杂的顺序,告诉大家如何调试 dotnet 系应用,特别是桌面端应用。本文将会向大家介绍使用 VisualStudio 大量的功能用来提高调试效率,穿插着也会介绍一些好用的调试辅助工具,以及如何编写方便调试的代码,期望大家通过阅读本文能有所收获

dotnet C# 做一个压缩包和解压缩出来的文件夹内容对比工具

我需要判断一个由某个压缩包文件解压缩出来的文件夹里面的文件内容,是否和压缩包里面记录的相同,于是就写了这个工具

dotnet C# 使用 System.IO.Hashing 库进行 Crc32 计算

本文和大家介绍 dotnet 官方提供的 System.IO.Hashing 库进行 Crc32 计算

WPF 探索 Skia 的竖排文本渲染的字符高度

本文记录我探索 Skia 做竖排文本渲染过程中的字符高度计算方法

解决 BT 工具连接数过多导致无网速问题

使用 BT 工具的时候,如果不小心开了超量的连接数,即在退出 BT 工具之后,依然存在很多连接记录,导致网速特别差的问题,即使在同个局域网进行传输,也能感受到网速特别差

dotnet C# 判断应用程序在 Wine 里运行的方法

本文将记录如何在 C# dotnet 代码里面判断当前进程运行在 Wine 里面

Avalonia 界面效果 滚动的渐变矩形边框

本文将和大家介绍一个 Avalonia 界面效果,制作一个滚动的渐变矩形边框

Avalonia 界面效果 三个圆实现模糊界面动效背景

本文将和大家介绍一个 Avalonia 动效界面效果,由三个圆带模糊效果实现的模糊界面动效背景,适合用在各种 AIGC 主题的应用里面

简单实现 sln 和 slnx 两个解决方案文件格式互转

本文将告诉大家如何通过 Microsoft.VisualStudio.SolutionPersistence 实现 sln 和 slnx 格式文件的相互转换