lindexi

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

林德熙

WPF 使用 Silk.NET 进行 DirectX 渲染入门

本文告诉大家如何使用 dotnet 基金会新开源的 Silk.NET 库调用 DirectX 进行渲染的方法。此库是对 DirectX 的底层基础封装,用上了 dotnet 和 C# 的各个新特性,相对来说基础性能较好,也许后续可以考虑作为 SharpDx 的代替

Roslyn MSBuild 在构建完成之后 将构建时间写入到输出文件

我期望在每次构建完成之后,创建一个文件,在这个文件里面写入是什么时间构建的。这个需求实现非常简单,只需要使用 Target 在构建完成,使用 WriteLinesToFile 方法写入时间到输出文件即可

OpenTK 入门 Vsync 垂直同步对刷新率的影响

本文将和大家介绍 Vsync 垂直同步的开启对 OpenTK 应用的刷新率的影响

dotnet SemanticKernel 入门 SemanticFunction 自然语言函数

本文将和大家介绍 LLM 的魔法,通过自然语言编程的方式开发 SemanticFunction 函数

IIncrementalGenerator 增量 Source Generator 生成代码入门 判断程序集之间的 InternalsVisibleTo 关系

本文告诉大家如何在使用 IIncrementalGenerator 进行增量的 Source Generator 生成代码时,如何判断两个程序集之间是否存在 InternalsVisibleTo 关系

Fiddler 插件开发 将插件放在独立子文件夹防止 DLL 冲突

我的 Fiddler 安装了许多插件,有一些插件存在 DLL 名冲突问题,比如多个不同的插件都存在名为 PluginCore.dll 但实际实现逻辑完全不相同的程序集。这就导致了多个插件的安装之间,如果没有将其放入到单独的文件夹内,将会因为文件名相同而冲突,让插件不能同时都安装。本文将和大家介绍 Fiddler 官方提供的将插件放在独立子文件夹的方法,用来解决 DLL 命名冲突

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

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

WPF 启动性能优化 在 EnsureHandle 之前设置 WindowStyle 提升性能

本文将记录一个在 WPF 应用程序启动过程中的性能优化点。如果一个窗口需要设置 WindowStyle 属性,那么在窗口 EnsureHandle 之前,设置 WindowStyle 属性将会比在 EnsureHandle 之后设置快不少

IIncrementalGenerator 增量 Source Generator 生成代码入门 获取项目默认命名空间

本文将告诉大家如何在分析器里面获取到项目的默认命名空间

IIncrementalGenerator 增量 Source Generator 生成代码入门 读取解析 ValueTuple 的定义

本文将告诉大家如何在分析器里面解析代码里面对于 ValueTuple 的定义,包括如何获取 ValueTuple 里面的 Item 的类型和命名

IIncrementalGenerator 增量 Source Generator 生成代码入门 获取引用程序集的所有类型

本文告诉大家如何在使用 IIncrementalGenerator 进行增量的 Source Generator 生成代码时,如何获取到当前正在分析的程序集所引用的所有的程序集,以及引用的程序集里面的所有类型

IIncrementalGenerator 增量 Source Generator 生成代码入门 判断程序集的引用关系

本文将告诉大家如何在 IIncrementalGenerator 增量 Source Generator 生成代码里面,在 Roslyn 分析器里面判断两个程序集是否存在引用关系

SemanticKernel 将 LLM 自然语言函数和传统编程融合到一起

本文将继续和大家介绍 SemanticKernel 神奇的魔法,将使用 LLM 大语言模型编写的自然语言函数和传统的编程语言编写的函数融合到一起的例子。通过本文的例子,大家可以看到 SemanticKernel 框架所推荐的一个工作模式,同时可以更好的理解 SemanticKernel 框架的用法

ASP.NET Core 6 浅析环境变量与配置的优先级

本文将简单介绍在 dotnet 6 下的 ASP.NET Core 里的环境变量当成配置的优先级行为。这部分内容在官方文档都有提到,只是我开始粗心没有看仔细,而踩到了坑,特意写篇博客记录一下

dotnet SemanticKernel 入门 调用原生本机技能

本文将告诉大家如何在 SemanticKernel 里面调用原生本机技能,所谓原生本机技能就是使用 C# 代码编写的原生本地逻辑技能,这里的技能可讲的可不是游戏角色里面的技能哈,指的是实现某个功能的技能,这是构成 AI 强大能力的基础

dotnet SemanticKernel 入门 自定义变量和技能

本文将告诉大家如何在 SemanticKernel 框架内定义自定义的变量和如何开发自定义的技能

dotnet SemanticKernel 入门 注入日志

使用 SemanticKernel 框架在对接 AI 时,由于使用到了大量的魔法,需要有日志的帮助才好更方便定位问题,本文将告诉大家如何在 SemanticKernel 注入日志

dotnet SemanticKernel 入门 将技能导入框架

在上一篇博客中和大家简单介绍了 SemanticKernel 里的技能概念,接下来咱准备将 技能 导入到 SemanticKernel 框架里面,进行一个管道式调用

dotnet 6 在 win7 系统 AES CFB 抛出不支持异常

本文记录在 win7 系统上调用 AES 加密时,采用 CFB 模式,可能抛出 CryptographicException 异常

非技术 对以后各大应用功能与 AI 助手的思考

本文记录我对于 AI 助手在未来给各大应用或网站或设备带来的影响的思考

WPF 开发

本文:我遇到的WPF的坑

Windows 官方提供的触屏硬件延迟测量方法

本文记录微软 Windows 官方在 Windows Hardware Lab Kit 提供的触屏硬件延迟测量方法

WPF 设置 IncludePackageReferencesDuringMarkupCompilation 属性导致分析器不工作

本文记录在 WPF 项目里面设置 IncludePackageReferencesDuringMarkupCompilation 属性为 False 导致了项目所安装的分析器不能符合预期工作

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

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

使用 SizeBench 分析 Exe 文件体积

本文将介绍微软开源免费的 SizeBench 工具,使用 SizeBench 工具可以用来分析 Exe 二进制文件的体积,分析 Exe 文件大小里面有哪些是可以优化的

C# 从控制台创建 WinUI 3 应用

本文将告诉大家如何从控制台而不是 WinUI3 模版项目,从零一步步创建出 WinUI 3 应用

dotnet 是否应该对 HttpResponseMessage 调用 Dispose 进行释放

对于 HttpClient 的请求响应值 HttpResponseMessage 来说,既然继承了 IDisposable 接口,自然就是想让大家可以通过 using 或者手动调用 Dispose 进行释放的。本文将来聊聊对 HttpResponseMessage 调用 Dispose 进行释放的意义有多大,有没有必要性的问题

修复 GitLab 的 CI Runner 提示找不到 pwsh 执行文件

本文告诉大家如何修复使用 GitLab 的 Runner 做 CI 时提示 “pwsh”: executable file not found in %PATH% 错误

win10 uwp 笔迹书写预测 墨迹书写加速

在 UWP 的 InkCanvas 里自带了预测书写轨迹的功能,开启此功能可以进行书写预测,从而减少书写延迟。本文将告诉大家如何在 UWP 的 InkCanvas 里开启笔迹书写预测功能

dotnet 给 NuGet 包加上 Aliases 别名解决类型冲突

有时某个相同命名空间相同名字的类型被两个不同的 NuGet 包定义了,尽管这是非常少见的事情,咱需要使用到其中的一个 NuGet 包的类型,但默认情况下将会因为类型冲突而构建不通过。本文将告诉大家如何给 NuGet 包加上 Aliases 别名解决类型冲突

dotnet 警惕 async void 线程顶层异常

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

MAUI 框架开发 将 MAUI 嵌入到 WPF 控件里

本文将介绍如何将 MAUI 的底层替换为 WPF 框架层,且将 MAUI 的内容嵌入到 WPF 的一个控件里面,无 UI 框架嵌入的空域问题

庆贺博客五百万访问量

我的技术博客总访问量已经突破了五百万,这让我感到非常兴奋和自豪,我想在这篇博客中庆祝一下这个里程碑。我想和大家分享一些关于我的技术博客的访问情况。通过分析访问数据,我发现不同类型的技术博客在不同时间段的访问量也有所不同。同时,我也想借此机会感谢大家的支持和阅读,我将会继续编写更多有趣的技术博客。

WPF 项目文件不加 -windows 的引用 WPF 框架方式

默认情况下的 WPF 项目都是带 -windows 的 TargetFramework 方式,但有一些项目是不期望加上 -windows 做平台限制的,本文将介绍如何实现不添加 -windows 而引用 WPF 框架

msbuild Roslyn 行为详解

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