lindexi

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

林德熙

dotnet 简单通过 EnumDisplayDevices 获取显示设备信息

本文将告诉大家如何在 C# dotnet 里面,调用 Windows 的 EnumDisplayDevices 函数获取显示设备信息

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

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

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 保存存放为本地图片文件的方法

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

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

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

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

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

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

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 格式文件的相互转换

git 已知问题 命令行调用 git 时可能存在环境变量投毒问题

本文记录一个我在 git 钩子唤起一个 C# dotnet 的进程,在此进程里面使用 Process.Start 执行 git 命令的时候,被 git 钩子环境变量投毒的问题

Avalonia 已知问题 继承滚动条将让里层控件无法获得无穷大空间

本文记录 Avalonia 的一个已知问题,如果有代码里面编写一个类型继承 ScrollViewer 类型,然后这个类型里面啥都不做。那将会导致所有放在此滚动条里面的控件无法获取无穷大的空间,其宽高无法撑开,被限定为上层容器尺寸

Roslyn 分析器已知问题 传递项目属性时将忽略分号之后的内容

本文记录 Roslyn 分析器、源代码生成器的已知问题,通过CompilerVisibleProperty 传递值时,所有在 ;# 和换行符之后的字符都会被忽略

WPF 已知问题 某些设备上的应用在 WindowChromeWorker 抛出 System.OverflowException 异常

准确来说,这个不算是 WPF 的问题,而是系统等的问题。在某些设备上的使用了 WindowChrome 功能的 WPF 应用,将在运行过程,在 WindowChromeWorker 类里面抛出 System.OverflowException 异常。核心原因是这些设备是 x64 设备,运行的 x64 的 WPF 应用程序,在消息循环里面传入的 lParam 是一个 x64 的指针,但在 WPF 里面使用 ToInt32 方法进行转换,刚好此 x64 的指针超过 int 的范围,从而抛出异常

dotnet Cli sdk 什么是 Terminal Logger 以及如何禁用此功能

在 dotnet 9 的 SDK 版本里面,将 Terminal Logger 功能设置为默认。这是一个令我烦恼的功能。我将在这篇博客里面和大家介绍这是一个什么功能,以及如何将此功能禁用

非技术 做饭实验记录

本文记录我的做饭实验,包括煮什么菜和做法

dotnet 在 VisualStudio 一键 F5 启动调试 Roslyn 分析器项目

本文将告诉大家如何在 VisualStudio 里面,一键使用习惯的 F5 键进行快速构建和启动调试 Roslyn 分析器项目

WPF 启动屏幕键盘

在 Windows 的平板模式下才能自动在获取键盘输入焦点时弹出屏幕键盘,但是 Windows 的屏幕键盘做的粗糙,有时候不会自动开启屏幕键盘,此时需要使用代码辅助

Roslyn 源代码生成器 SourceGenerator 获取代码文件的本地绝对路径

本文告诉大家如何在源代码生成器 SourceGenerator 里面获取代码文件的本地文件的绝对路径

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

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

dotnet 在 UNO 里获取 X11 窗口指针的方法

在 UNO 的 5.2 版本,可以使用 X11 平台承载 UNO 应用。此时我需要获取到 UNO 应用的窗口的 X11 窗口指针,如此即可调用 X11 平台相关逻辑对 UNO 窗口执行一些交互

dotnet 6 为什么网络请求不跟随系统网络代理变化而动态切换代理

本文记录在 dotnet 6 的网络和在 .NET Framework 的行为的变更。在 dotnet 6 下,默认的网络请求在系统网络代理变更的时候,是不会动态切换代理的。例如在应用运行进行网络通讯之后,打开 Fiddler 抓包,此时将会发现 Fiddler 抓不到包,只有在应用重启之后才能抓到。或者是开着 Fiddler 抓包,然后退出 Fiddler 之后应用就断网了

UWP 开发中,需要知道的1000个问题

本文主要写我开发遇到常(zhi)见(zhang)问题。

dotnet LibGit2Sharp 使用笔记

本文记录我对 LibGit2Sharp 库的使用笔记