lindexi

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

林德熙

WPF 使用 Direct2D1 画图 绘制基本图形

本文来告诉大家如何在 Direct2D1 绘制基本图形,包括线段、矩形、椭圆

Roslyn 节点的 Span 和 FullSpan 有什么区别

本文告诉大家在使用 Roslyn 分析代码时,使用的 Span 和 FullSpan 有什么区别

C# 判断两条直线距离

本文告诉大家获得两条一般式直线距离。

git rebase 合并多个提交

rebase可以修改记录,我总是做小更改就提交,仓库有好多看起来很乱的 git没有可以把最后一个提交提交到服务器的能力,可以用rebase来做到把多个提交合并为一个。使用这个命令很简单,下面就来告诉大家如何使用这个命令

win10 UWP 九幽登录

九幽第三方登录及用户信息云存储插件可以登录QQ、新浪微博

win10 UWP 九幽数据分析

九幽数据统计是统计和分析数据来源,用户使用,先申请账号

win10 UWP Markdown 含源代码

Windows下没有比较好的Markdown编辑器 我就自己写一个 csdn的Markdown很好,就是我需要截图保存有麻烦 需要把我的截图保存在本地,然后上传

使用 IShellLinkW 创建 URL 网址超链接快捷方式

本文记录违规地采用 IShellLinkW 创建 URL 网址超链接快捷方式的方法

dotnet win32 判断传入路径是否在 U 盘

我在制作一个类似 PPT 的工具,这个工具有超链接模块,我需要关注的是超链接文件是否链接到 U 盘上了已给出提示。防止一些用户链接到自己电脑上,然后换个电脑又找不到

dotnet 警惕 async void 线程顶层异常

在应用程序设计里面,不单是 dotnet 应用程序,绝大部分都会遵循让应用在出现未处理异常状态时终结的原则。在 dotnet 应用里面,如果一个线程顶层出现未捕获异常,则应用进程将会被认为出现异常状态而退出。通常来说就是未捕获异常导致进程闪退

Office 已知问题 GROOVEEX.DLL 带崩进程

这是一位老师向我反馈的问题,我的一个 WPF 应用程序在他的设备上,任何弹出保存文件对话框或打开文件对话框的功能,都会导致进程闪退。经过进一步调查,我发现他电脑上任何软件弹出文件保存对话框都会闪烁,问题本身和 WPF 无关。最终调查到是 Office 的一个注入组件导致的问题

dotnet 10 已知问题 WinForms 的 TargetFramework 与 System.Drawing.Common 不匹配将抛出找不到类型异常

本文记录 dotnet 10 新引入的问题。如果 TargetFramework 是 .NET 9 版本,而引用的 System.Drawing.Common 包是 10.0 版本,那么运行程序时,可能抛出找不到类型异常

DirectWrite 通过 GetUnicodeRanges 获取字体能支持的字符范围

一个字体文件只能支持有限的字符数量,为了能够知道某个字体包含哪些字符,可通过 DirectWrite 提供的 GetUnicodeRanges 方法获取。本文将演示如何从 IDWriteFontFace 的 GetUnicodeRanges 方法获取字体能支持的字符范围以及对比 WPF 的行为

dotnet 制作一个简单的自动更新系统日期时间工具

本文和大家介绍我制作的一个简单的开机自启的自动更新系统日期时间工具

WPF 使用 DisplayConfigGetDeviceInfo 获取显示器名的方法

本文将和大家介绍在 WPF 里面调用 Win32 的 DisplayConfigGetDeviceInfo 获取显示器名的方法

dotnet C# X11 开发笔记

本文记录我学习开发 X11 应用的笔记

C# 浮点数 double 的 IsFinite IsNormal IsRealNumber 分不清楚

在 dotnet 的 double 或 float 浮点数里有很多个辅助方法用于判断状态,如是否无效值或无穷。这些方法含义不相同,让我比较混淆,于是我就尝试记录一篇博客说清楚这些方法的含义

dotnet C# 主构造函数带来的虚属性优势

在基类里面使用虚属性,在构造函数调用抽象或虚方法时,一个令开发者烦恼的点在于调用的抽象或虚方法可能访问到子类还没赋值的属性,导致出现空异常

WPF Application Compatibility switches list

This is a list of all System.AppContext base application compatibility switches present in WPF today, along with their defaults and related documentation.

IIncrementalGenerator 增量 Source Generator 生成代码入门 读取 csproj 项目文件的属性配置

本文告诉大家如何在使用 IIncrementalGenerator 进行增量的 Source Generator 生成代码时,读取项目里的项目文件属性,从而实现为项目定制的逻辑。或者是读取 NuGet 包里面的一些配置,从而方便实现逻辑

为 IIncrementalGenerator 增量 Source Generator 源代码生成项目添加单元测试

本文属于 IIncrementalGenerator 增量 Source Generator 源代码生成入门系列博客,本文将和大家介绍如何为源代码生成项目添加单元测试

IIncrementalGenerator 如何在源代码生成器单元测试提供 AnalyzerConfigOptionsProvider 选项

本文属于 IIncrementalGenerator 增量 Source Generator 源代码生成入门系列博客,本文将和大家介绍如何为源代码生成项目添加的单元测试里面提供 AnalyzerConfigOptionsProvider 选项

dotnet 10 已知问题 构建 WPF 时提示 System.Private.Windows.GdiPlus 程序集未找到错误

本文记录 dotnet 10 的已知问题,将会导致 WPF 项目构建的时候给出错误

dotnet C# 警惕结构体加等事件

前几天我在对文本库进行性能优化,将其中一个枚举迭代器从类改成结构体,然而改造之后却遇到了本文记录的在结构体内加等事件的坑

dotnet 代码调试方法

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

Skia 在龙芯搭景嘉微显卡设备 某些字体会渲染相互覆盖

此问题是先在 Avalonia 应用上发现的,后续调查了解到是 Skia 底层的问题。本文将记录此问题和提供规避方法

WPF 讲讲 Microsoft.NET.Sdk.WindowsDesktop 的原理

在使用 .NET Core 3.0 和以上版本,可以使用新的 SDK 版本支持的 csproj 项目文件,这个 SDK 格式的项目文件可以支持 .NET Core 以及 .NET Framework 版本的 WPF 核心就是在 csproj 项目的第一句话。本文就来和大家聊这个 Microsoft.NET.Sdk.WindowsDesktop 的原理

dotnet 读 WPF 源代码 学习使用 Microsoft.DotNet.Arcade.Sdk 处理代码里的多语言

在 WPF 开源代码里面,可以看到是从各个项目的 Strings.resx 和对应的 xlf 文件,生成对应项目的多语言程序集。这里的多语言程序集可用于抛出异常时,给出本地化的消息提示

开源项目

这是我收藏的开源项目

ASP.NET Core 制作一个低资源占用的支持超大文件表单上传的服务

故事的背景是我准备制作一个签名服务,为打包构建之后的产物文件进行签名和对其内容信息进行扫描。在这个过程里面,我需要搭建一个 ASP.NET Core 服务,这个服务要能承载客户端上传的超大文件表单,且预算有限,此服务占用资源要足够低

WPF 已知问题 使用 WindowChrome 在切换系统主题色时导致窗口界面偏移

本文记录 WPF 的一个已知问题,设置窗口的 WindowChrome 的 NonClientFrameEdges 属性之后,当切换系统主题或主题色时,将可以看到窗口界面内容偏移或跳动闪烁现象

SignTool 使用 SafeNet eToken 硬证书进行代码签名

现在软件代码签名已经不能用 pfx 软证书了,需要搭配 FIPS140-2 Level2、Common Criteria EAL4级以上或者同等认证级别的硬件,如 USB 令牌、硬件安全模块 HSM 等才能完成签名

C# 使用 using 关键字间接实现只读局部变量的方法

众所周知,在 C# 里面是没有只读局部变量的功能的。但有趣的 C# 语法让咱可以使用现有的 using 关键字间接实现只读局部变量

拼音输入法 快速输入带音调的字符

本文告诉大家如何使用本文提供的输入法快速输入带音调的字符