lindexi

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

林德熙

博客导航

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

WPF 使用 WNetUseConnection 连接 SMB 网络资源

本文将和大家演示如何在 WPF 里面,使用 WNetUseConnection 连接 SMB 网络资源

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 消息,从消息里面获取触摸点信息,使用触摸点信息绘制简单的笔迹

X11 设置多屏下窗口在哪个屏幕上全屏

在 X11 里面,可以指定一个窗口应该在哪个屏幕上全屏显示,甚至可以指定窗口横跨几个屏幕显示

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

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

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

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

记 X11 里面触摸的一些行为

这是我在学习 CPF 和 Avalonia 过程中,编写的 X11 触摸测试程序所测试到的一些行为

dotnet X11 的多屏触摸行为测试

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

X11 使用 XSetWMNormalHints 固定窗口所在的屏幕

故事的背景是我有一个带来两个屏幕的设备。我计划使用 X11 创建两个窗口,分别让这两个窗口在两个屏幕上。在不做任何处理的情况下,会受到 X 窗口管理器的影响,导致全部都在鼠标最后一次命中的屏幕上显示窗口

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

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

SkiaSharp 使用 HarfBuzz 修复找不到 Symbol 字形

故事的背景是我尝试在纯净的 Debian docker 设备上,使用 Oxage.Wmf 解析转换 WMF 图片,在此过程中我需要使用 SkiaSharp 渲染出字体,一切在 Windows 上跑得好好的,结果在 Linux 上就渲染出方框,无法使用 Symbol 字体渲染出正确的文本

制作一个能构建 dotnet AOT 的 gitlab runner 的 Debian docker 镜像

我的需求是需要有一个能够构建出 dotnet 的 AOT 包的环境,要求这个环境能解决 glibc 兼容依赖的问题,能打出来 x64 和 arm64 的 AOT 的包,且能够运行 gitlab runner 对接自动构建

linux 麒麟系统修复 wmf2gd 转换 wmf 图片提示 wmf_ipa_font_map 错误

本文记录在 2403 麒麟系统上,使用 wmf2gd 转换 wmf 图片时提示 ERROR: font.c (1334): wmf_ipa_font_map: failed to load any font! 错误问题

dotnet C# 基础二进制处理 二进制数组与结构体的互转

本文将告诉大家在 dotnet 里面的二进制基础处理知识,如何在 C# 里面将结构体数组和二进制数组进行相互转换的简单方法

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

本文收集 Office 解析相关博客

WPF 使用 SharpDx 渲染博客导航

我写了很多在 WPF 使用 SharpDx 渲染的博客,但是有小伙伴吐槽说这些博客没有一个好看的顺序,我将所有的 SharpDx 的博客按照顺序放在下面

使用 Silk.NET 调用 DirectWrite 获取字体 Font Metrics 信息

本文将告诉大家在 dotnet 里面,通过 Silk.NET 库调用 DirectWrite 获取给定字体的 Font Metrics 信息

dotnet 简单聊聊 Skia 里的 SKFontMetrics 的各项属性作用

本文将和大家简单聊聊 Skia 里的 SKFontMetrics 的各项属性作用和代表的含义

开源实战

本文记录我参与的开源项目

定制 MSTest 单元测试框架 让一个 TestMethod 包含多个测试用例

在默认的 MSTest 单元测试框架里面,每个标记了 TestMethodAttribute 特性的方法,都只有一个测试用例。本文通过 ITestDataSource 接口辅助实现让一个 TestMethod 包含多个测试用例

dotnet C# 入门示例 用底层的 Socket 进行 HTTP 网络请求

本文属于基础入门博客,将和大家介绍如何在 dotnet C# 代码里面使用底层的 Socket 进行 HTTP 网络请求

dotnet 已知问题 NamedPipeClientStream 连接不存在的服务在内部抛出异常

本文记录一个 dotnet 已知问题,此问题在 dotnet 9 之前就存在。在 Linux 系统上,使用 NamedPipeClientStream 连接不存在的服务时,将不断疯狂地抛出 SocketException 异常

dotnet 数组池 ArrayPool 行为记录

本文记录 dotnet 的 ArrayPool 数组池的行为测试

Avalonia 已知问题 使用 RenderTargetBitmap 截图文本模糊

本文记录 Avalonia 的一个已知问题,使用 RenderTargetBitmap 进行截图时,如果顶层子控件没有设置背景色或背景色是透明色,则截图保存出来的图片里面的文本字符串都是模糊的

dotnet OpenXML 已知问题 设置 0x0001 等 XML 不合法字符给到标题将在保存时抛出异常

本文记录 OpenXML 的已知问题,在 PackageProperties.Title 等属性上设置字符串包含如 Unicode 编码为 0x0001 等 XML 不合法字符,将在保存写入文件时,抛出 ArgumentException 异常

测试 dotnet 9 的 AssemblyLoadContext 动态加载和卸载程序集能力

本文记录我测试 dotnet 9 的 AssemblyLoadContext 动态加载和卸载程序集能力。实测发现可以动态进行加载,且在卸载之后对程序集 DLL 文件能够做到无引用,卸载之后可以正常删除程序集 DLL 文件

dotnet 测试 AOT 的 API 行为

本文记录我测试 AOT 的 API 行为

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

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

dotnet 简单解压缩 tar gz 到文件夹

本文将和大家介绍如何在 dotnet 7 或更高版本里,使用不到 10 行可执行代码解压缩 tar.gz 压缩包到文件夹

Packaging.DebUOS 专门为 dotnet 应用制作 UOS 安装包

Packaging.DebUOS 是我所在的团队开发开源的一款专门用在为 dotnet 的应用制作成为符合要求的 UOS 统信系统软件安装包的工具,此工具可以辅助开发者使用现有的工具链经过简单的配置即可完成安装包的制作

WPF 使用 Win2d 渲染

在当前所有渲染框架里面,做 2D 渲染的,最好的框架是 Win2d 这个提供了大量底层接口封装,不仅性能高同时接口设计非常好 在很久之前,只有在 UWP 等现代应用才能使用 Win2d 而 WPF 是不能使用的。好在微软开放了一些黑科技,可以在 WPF 上使用 Win2d 渲染,下面就让我告诉大家如何在 WPF 上使用