lindexi

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

林德熙

博客导航

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

Windows 调试工具课程

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

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

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

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 应用上

WPF 让窗口激活作为前台最上层窗口的方法

在 WPF 中,如果想要使用代码控制,让某个窗口作为当前用户的输入的逻辑焦点的窗口,也就是在当前用户活动的窗口的最上层窗口,默认使用 Activate 方法,通过这个方法在大部分设备都可以做到激活窗口

WPF 弹出 popup 里面的 TextBox 无法输入汉字

这是一个 wpf 的bug,在弹出Popup之后,如果 Popup 里面有 TextBox ,这时无法在里面输入文字。

WPF 修复 dotnet 6 与源代码包冲突

在 dotnet 6 时,官方为了适配好 Source Generators 功能,于是默认就将 WPF 的 XAML 构建过程中,引入第三方库的 cs 文件,这个功能默认设置为开启。刚好源代码包为了修复在使用 dotnet 6 SDK 之前,在 WPF 的构建 XAML 过程中,不包含第三方库的代码文件,从而使用黑科技将源代码包加入到 WPF 构建 XAML 中。在 VisualStudio 升级到 2022 版本,或者是升级 dotnet sdk 到 dotnet 6 版本,将会更新构建调度,让源代码包里的代码文件被加入两次,从而构建失败

记腾讯微信输入法导致 WPF 应用卡住 窗口无法激活和显示

本文记录我远程一位老师的设备,这位老师使用的是 Win7 Sp1 系统,现象是 WPF 应用的窗口无法激活,在 user32 的 SetForegroundWindow 或 NtUserShowWindow 方法卡住

SixLabors.ImageSharp 如何读取 IDAT 校验失败的 png 图片

本文记录如何在 SixLabors.ImageSharp 库里面读取 IDAT 校验失败的 png 图片

WPF 被 灵格斯翻译官 取词带崩

本文记录 灵格斯翻译官 翻译软件带崩 WPF 程序问题

dotnet 9 WPF 项目禁用 IncludePackageReferencesDuringMarkupCompilation 导致源代码包 XAML 构建失败

本文记录在 dotnet 6 时通过禁用 IncludePackageReferencesDuringMarkupCompilation 解决源代码冲突问题时,在 dotnet 9 将因此导致 XAML 构建生成的 g.cs 文件包含的 XAML 只记录相对文件路径,从而导致构建不通过

msbuild 项目文件常用判断条件

在写项目文件的时候,需要根据不同的条件定义或执行不同的代码,有一些比较常使用的判断,本文收藏起来,方便大家抄代码

WPF 打开资源管理器且选中某个文件

本文将和大家介绍如何在 Windows 系统上使用 SHOpenFolderAndSelectItems 方法打开资源管理器且选中给定的文件

开源实战

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

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

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

记 QEMU 虚拟磁盘设备移动文件抛异常但实际移动成功

本文记录我所在的团队的一个简单的 WPF 应用程序在某个用户设备上跑出来的诡异行为。这个程序会从网上下载资源,下载的时候先下载到临时文件,再通过移动重命名的方式放到正确的路径。偶尔会出现下载成功,但是移动过程失败,但远程过去看却发现实际移动成功了

Windows 客户端软件自动更新服务的开发有哪些需求

我在团队里面有接手过 Windows 客户端软件的自动更新模块,这是一个非常庞大的模块,我隔壁有一个团队在专门负责事情。而我需要做的只是去接入而已,在接入的过程中,我也了解到整个自动更新机制需要涉及到的功能

记 Kylin 麒麟系统安全中心拦截导致 dotnet sdk 找不到 OpenSsl 构建失败

我在龙芯机器上安装了 Kylin 麒麟系统,然后去下载龙芯的 dotnet sdk 安装,接着尝试构建一个简单应用,却发现构建失败。报错是 System.DllNotFoundException: Unable to load shared library ‘libSystem.Security.Cryptography.Native.OpenSsl’ or one of its dependencies

dotnet 记龙芯麒麟教育版安全中心拦截文件 导致 docker 内 CI CD 构建失败

本文记录我在龙芯旧世界的麒麟教育版系统上,使用 docker 对 dotnet 进行构建和打包过程中,因为安全中心拦截而出现奇怪的问题

dotnet 9 WPF 连字符渲染支持

连字符渲染功能是 WPF 呼声很高的一个功能,核心需求方是使用 Visual Studio 的开发者们。开发者们期望使用连字符的时候可以进行连字符渲染,让开发过程中的视觉效果更加。于是作为 Visual Studio 的基础设施的 WPF 就要承担此功能的实现。经过漫长的开发,终于在 dotnet 9 里面加入了此功能

dotnet 解决使用本地不安全 http 的 NuGet 源 NU1803 警告或构建失败问题

出于安全性考虑,微软在 NuGet 的 6.3 版本开始引入 NU1803 警告,此警告将在遇到使用的 NuGet 源为 http 源时触发。 微软推荐 NuGet 的源应该都是安全的 https 源,甚至在 dotnet 9 预览版本里面将其视为构建错误

记 dotnet campus 组织为适配龙芯所做的更改

本文记录在龙芯适配过程中的 dotnet campus 开源组织的更改,这些更改仅仅只是 dotnet campus 开源组织自身的项目的更改,不涉及给任何龙芯上游的贡献

入门龙芯旧世界汇编指令

我是龙芯汇编指令新手,本文是我学习龙芯汇编的笔记

制作一个龙芯旧世界的 dotnet sdk docker 镜像

本文将和大家分享如何制作一个在龙芯旧世界上可跑的 dotnet sdk docker 镜像,以及我的踩坑过程

剪贴板被占用导致应用使用剪贴板拷贝内容失败抛出 COMException 0x800401D0 错误

本文记录某些软件,例如 向日葵远程控制 软件占用剪贴板,导致 WPF 应用使用剪贴板拷贝内容和设置剪贴板时,抛出 System.Runtime.InteropServices.COMException (0x800401D0): OpenClipboard 失败 (0x800401D0 (CLIPBRD_E_CANT_OPEN)) 异常

读取麒麟系统的各项版本信息

本文将记录读取麒麟系统的各项版本信息

记从 dotnet framework 4.8 升级到 4.8.1 时运行的 dotnet remoting 程序出现空异常

本文记录一个奇怪的坑,某台用户设备从 .NET Framework 4.8 更新到 .NET Framework 4.8.1 时,所运行的 .NET Remoting 程序出现了奇怪的空异常。且重启之后不复现

UOS 开启 VisualStudio 远程调试 .NET 应用之旅

本文记录的是在 Windows 系统里面,使用 VisualStudio 2022 远程调试运行在 UOS 里面 dotnet 应用的配置方法

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

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

Avalonia 已知问题 第二次 Composition Animation 无法播放

在 Avalonia 里面,如果多次加入 Composition 的 Animation 动画,将会看到第二次加入是停止播放动画的

开源项目

这是我收藏的开源项目

记 X11 里面触摸的一些行为

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