摘要: 本文记录在 win7 系统上调用 AES 加密时,采用 CFB 模式,可能抛出 CryptographicException 异常 阅读全文
posted @ 2023-09-05 19:40 lindexi 阅读(99) 评论(0) 推荐(0)
摘要: 本文告诉大家如何在使用 IIncrementalGenerator 进行增量的 Source Generator 生成代码时,读取项目里的项目文件属性,从而实现为项目定制的逻辑。或者是读取 NuGet 包里面的一些配置,从而方便实现逻辑 阅读全文
posted @ 2023-09-05 19:40 lindexi 阅读(246) 评论(0) 推荐(0)
摘要: 本文将简单介绍在 dotnet 6 下的 ASP.NET Core 里的环境变量当成配置的优先级行为。这部分内容在官方文档都有提到,只是我开始粗心没有看仔细,而踩到了坑,特意写篇博客记录一下 阅读全文
posted @ 2023-09-05 19:40 lindexi 阅读(50) 评论(0) 推荐(0)
摘要: 本文告诉大家如何在使用 IIncrementalGenerator 进行增量的 Source Generator 生成代码时,如何判断两个程序集之间是否存在 InternalsVisibleTo 关系 阅读全文
posted @ 2023-09-05 19:40 lindexi 阅读(98) 评论(0) 推荐(0)
摘要: 本文告诉大家如何在使用 IIncrementalGenerator 进行增量的 Source Generator 生成代码时,如何获取到当前正在分析的程序集所引用的所有的程序集,以及引用的程序集里面的所有类型 阅读全文
posted @ 2023-09-05 19:40 lindexi 阅读(212) 评论(0) 推荐(0)
摘要: 本文将和大家介绍 Vsync 垂直同步的开启对 OpenTK 应用的刷新率的影响 在上一篇博客 OpenTK 入门 初始化窗口 告诉了大家如何初始化 OpenTK 承载 OpenGL 的窗口的应用,在上一篇博客基础上,咱尝试修改创建 MainWindow 的参数,从而测试 Vsync 垂直同步对刷新 阅读全文
posted @ 2023-09-05 19:02 lindexi 阅读(17) 评论(0) 推荐(0)
摘要: 本文告诉大家如何在使用 IIncrementalGenerator 进行增量的 Source Generator 生成代码时,如何从语法分析过程,将获取的语法 Token 转换到语义分析上,比如获取类型完全限定名。一个使用的例子是在拿到一个 Token 表示某个类型时,本文将演示通过语义分析获取到拿到的 Token 的 Type 类型的 FullName 带命名空间的完全限定名 阅读全文
posted @ 2023-09-05 15:43 lindexi 阅读(557) 评论(0) 推荐(3)
摘要: title: git fatal detected dubious ownership in repository 的解决方法 description: 我换了一台电脑,将旧电脑的硬盘换到新电脑上;我装了双系统,切换到另一个系统时;我发现了 git 代码仓库无法执行 git 命令,不断报错 fata 阅读全文
posted @ 2023-09-05 15:35 lindexi 阅读(2431) 评论(0) 推荐(0)
摘要: title: github 解决推拉代码提示 REMOTE HOST IDENTIFICATION HAS CHANGED 失败 description: 本文记录最近 github 推送或拉取代码时提示 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED 阅读全文
posted @ 2023-09-05 15:35 lindexi 阅读(136) 评论(0) 推荐(0)
摘要: 本文来记录一个我自己在使用的 NTP 时间校准客户端的实现 阅读全文
posted @ 2023-09-05 15:35 lindexi 阅读(245) 评论(0) 推荐(0)
摘要: 我期望在每次构建完成之后,创建一个文件,在这个文件里面写入是什么时间构建的。这个需求实现非常简单,只需要使用 Target 在构建完成,使用 WriteLinesToFile 方法写入时间到输出文件即可 先写一个 Target 设置在 Build 之后执行 <Target Name="WriteBu 阅读全文
posted @ 2023-09-05 15:35 lindexi 阅读(12) 评论(0) 推荐(0)
摘要: 本文记录一个 dotnet 6 已知问题,此问题预计是在 .NET Framework 4.5 时就引入的,我没有考古在 .NET Framework 4.5 之前是否还存在此问题。当前这个问题在 .NET 7 修复 阅读全文
posted @ 2023-09-05 15:34 lindexi 阅读(39) 评论(0) 推荐(0)
摘要: 本文记录一个 dotnet 6 已知问题,准确来说这是一个在 dotnet 5 引入的问题,到 dotnet 6.0.12 还没修。在获取 CultureInfo.NumberFormat 属性时,在一些奇怪的 Windows 设备上可能抛出 IndexOutOfRangeException 异常。本文将来告诉大家问题的原因和解决方法 阅读全文
posted @ 2023-09-05 15:34 lindexi 阅读(98) 评论(0) 推荐(0)
摘要: 本文将告诉大家如何通过 Vortice 使用 D2D 的 CommandList 功能 阅读全文
posted @ 2023-09-05 15:34 lindexi 阅读(93) 评论(0) 推荐(0)
摘要: 使用 Direct2D 过程中将可以使用到 Direct2D 强大的特效功能,比如给某些界面绘制内容添加特效支持。本文将告诉大家如何通过 Vortice 将 ID2D1CommandList 作为特效的输入源,从而实现给某些绘制好的界面元素叠加特效 阅读全文
posted @ 2023-09-05 15:34 lindexi 阅读(60) 评论(0) 推荐(0)
摘要: 在上一篇博客里面告诉大家,如何使用 Vortice 从零开始控制台创建 Direct2D1 窗口。上一篇博客采用的是 CreateDxgiSurfaceRenderTarget 的方式拿到了 ID2D1RenderTarget 进行绘制,本文将和大家介绍另一个方式,通过 ID2D1DeviceContext 绘制画面。从底层来说,这两个方式底层都是相同的,只是上层的 API 调用方法不相同而已 阅读全文
posted @ 2023-09-05 15:34 lindexi 阅读(199) 评论(0) 推荐(0)
摘要: 在 PPT 里面的表格可以通过表格样式配置决定表格的样式,本文将和大家介绍如何获取和解析表格的样式 阅读全文
posted @ 2023-09-05 15:34 lindexi 阅读(153) 评论(0) 推荐(0)
摘要: 本文将开坑告诉大家什么是 SemanticKernel 以及如何使用框架 阅读全文
posted @ 2023-09-05 15:34 lindexi 阅读(454) 评论(0) 推荐(0)
摘要: 本文记录在 dotnet 7 下的 WPF 的一个破坏性改动。在 dotnet 7 下的 WPF 支持 DataGrid 在按下 F3 键的时候,自动按照当前所选列进行列自动排序。这将会让原本采用 F3 键进行其他业务逻辑的代码,工作起来有些非预期 阅读全文
posted @ 2023-09-05 15:34 lindexi 阅读(55) 评论(0) 推荐(0)
摘要: 本文记录 WPF 在 dotnet 7 的一个已知问题,此问题当前已修复,只需更新 SDK 或运行时即可。使用 TreeView 在开启虚拟化之后只显示首项,其他项不显示。本文将告诉大家此问题的原因和修复方式 阅读全文
posted @ 2023-09-05 15:34 lindexi 阅读(61) 评论(0) 推荐(0)
摘要: 习惯了 WPF 或 UWP 等的依赖属性的绑定机制之后,我在写 CLR 属性时,有时也期望将两个 CLR 属性给绑定到一起。在 dotnet 里,提供了 System.ComponentModel.INotifyPropertyChanged 接口,用于让某个类型约定了属性变更通知机制。于是有了这个基础,即可实现 CLR 属性的单向和双向绑定,核心原理就是在收到 INotifyPropertyChanged 的属性变更事件之后,更改绑定方的属性 阅读全文
posted @ 2023-09-05 15:34 lindexi 阅读(112) 评论(0) 推荐(0)
摘要: 在 dotnet 里面的 MemoryFailPoint 可用来测试当前进程是否还能分配申请给定大小的内存空间,这个是一个高级编程的类型,大部分情况下都不需要用到。本文内容由 New Bing 编写,将和大家介绍 MemoryFailPoint 的使用方法 阅读全文
posted @ 2023-09-05 15:34 lindexi 阅读(151) 评论(0) 推荐(0)
摘要: 对于 C# 编程新手,学习语法和框架是必要的,但是如何将它们灵活地运用到实际项目中,是一个更高层次的挑战。如果只是死记硬背语法规则和框架用法,而没有足够的编程实践,很难提高编程水平和逻辑思维。这个时候,阅读一些优秀的开源项目,可以让我们从中学习到别人的编码风格、代码组织方式,代码逻辑编写等等,从而提升自己的 C# 语言能力和对 dotnet 框架的掌握。本文要推荐给大家的,是一个非常有趣且适合新手入门的控制台游戏项目。这个项目是 dotnet 组织下的一个开源项目,里面包含了许多经典游戏,这些游戏都是用 C# 语言编写的,而且只用到了基础控制台功能,没有涉及到复杂的图形界面或者网络通信等技术。因此,这个项目对于前置知识要求很低,只要你掌握了 C# 的基本语法和数据结构,就可以轻松地阅读和理解它们。同时,这些游戏又非常有趣和富有挑战性,你可以在玩游戏的同时学习到很多编程技巧和逻辑思路。这个项目看起来十分适合新手阅读和学习 阅读全文
posted @ 2023-09-05 15:34 lindexi 阅读(389) 评论(0) 推荐(0)
摘要: 对于 HttpClient 的请求响应值 HttpResponseMessage 来说,既然继承了 IDisposable 接口,自然就是想让大家可以通过 using 或者手动调用 Dispose 进行释放的。本文将来聊聊对 HttpResponseMessage 调用 Dispose 进行释放的意义有多大,有没有必要性的问题 阅读全文
posted @ 2023-09-05 15:34 lindexi 阅读(68) 评论(0) 推荐(0)
摘要: 本文记录一个已知问题,或者准确来说是设计如此的行为,在 dotnet core 下,无论是 dotnet core 3.1 还是 dotnet 5 或 dotnet 6 或 dotnet 7 等,如果访问的 https 链接返回 302 状态码,且跳转的链接是一个 http 链接,那将不会自动跳转 阅读全文
posted @ 2023-09-05 15:34 lindexi 阅读(91) 评论(0) 推荐(0)
摘要: 本文告诉大家如何在基于 .NET 6 的 WPF 使用 WinRT 的手写识别功能 阅读全文
posted @ 2023-09-05 15:32 lindexi 阅读(85) 评论(0) 推荐(0)
摘要: 本文属于 WPF 自定义控件入门系列博客。本文整理在 WPF 里面,自定义控件,非用户控件时,可以重写基类的许多方法和属性,这些方法和属性的作用和含义。方便让大家了解到自定义控件时,有哪些方法或属性可以被重写,重写时的正确实现以及其影响是什么 阅读全文
posted @ 2023-09-05 15:32 lindexi 阅读(191) 评论(0) 推荐(1)
摘要: 本文将告诉大家如何在 WPF 里面进行全局监控任意的窗口创建显示打开,可以获取到每个 WPF 窗口的打开的时机。如此可以用来辅助定位问题和输出日志 阅读全文
posted @ 2023-09-05 15:32 lindexi 阅读(309) 评论(0) 推荐(0)
摘要: 这是一个比较让人困惑的一个点,我一直都以为 Dispatcher.InvokeShutdown 和 Application.Current.Shutdown 是完全等价的。但是后面发现了其实这两者还是有些不同的,感觉上是 Dispatcher.InvokeShutdown 系列方法有点点设计的问题,太过于为了让框架内的代码解耦导致了让上层开发者困惑。 推荐在退出应用时,尽量调用的是 Application.Current.Shutdown 方法,而不是 Dispatcher.InvokeShutdown 系列方法 阅读全文
posted @ 2023-09-05 15:32 lindexi 阅读(186) 评论(0) 推荐(0)
摘要: 本文记录微软 Windows 官方在 Windows Hardware Lab Kit 提供的触屏硬件延迟测量方法 阅读全文
posted @ 2023-09-05 15:32 lindexi 阅读(96) 评论(0) 推荐(0)
摘要: 我遇到在部署 CI 服务器,执行 cmd 命令构建,输出的中文是乱码。我期望让 dotnet 命令行输出使用英文解决乱码问题。通过设置 dotnet 命令行的语言文化,即可解决此问题 阅读全文
posted @ 2023-09-05 15:32 lindexi 阅读(368) 评论(0) 推荐(0)
摘要: 本文将告诉大家如何修复 WinUI 3 非打包的应用,在分发给到客户时,在客户的机器上运行提示缺少 Windows App Runtime 环境 阅读全文
posted @ 2023-09-05 15:32 lindexi 阅读(1291) 评论(0) 推荐(0)
摘要: 默认情况下的 WPF 项目都是带 -windows 的 TargetFramework 方式,但有一些项目是不期望加上 -windows 做平台限制的,本文将介绍如何实现不添加 -windows 而引用 WPF 框架 阅读全文
posted @ 2023-09-05 15:32 lindexi 阅读(107) 评论(0) 推荐(0)
摘要: 本文记录一个 Win32 的有趣行为,调用 CreateProcess 方法传入特别的参数,可以让任务管理器里的命令行不显示应用文件路径 阅读全文
posted @ 2023-09-05 15:32 lindexi 阅读(206) 评论(0) 推荐(0)
摘要: 本文记录如何在 WinDbg 里,设置在加载到某个 DLL 时,自动进入断点。通过此方式用来定位是哪个业务模块加载了某个 DLL 模块 阅读全文
posted @ 2023-09-05 15:32 lindexi 阅读(119) 评论(0) 推荐(0)
摘要: 本文记录在 WPF 项目里面设置 IncludePackageReferencesDuringMarkupCompilation 属性为 False 导致了项目所安装的分析器不能符合预期工作 阅读全文
posted @ 2023-09-05 15:32 lindexi 阅读(21) 评论(0) 推荐(0)
摘要: 本文将告诉大家如何在 WPF 里面设置图片的 EXIF 信息,包括如何设置图片的旋转信息,以及如何读取 EXIF 的内容 阅读全文
posted @ 2023-09-05 15:32 lindexi 阅读(99) 评论(0) 推荐(0)
摘要: 通过 Vortice 库可以使用非常底层的方式调用到 Direct2D1 进行渲染,本文将使用 D2D 离屏渲染到 IWICBitmap 上,再使用一点点反射黑科技,直接将此 IWICBitmap 对接到 WPF 框架里。本文提供的这个方法可以实现极高性能且只有很少的转换损耗的离屏渲染方式,唯一的一个缺点是需要进行一点反射调用,适合用来静态画面渲染上 阅读全文
posted @ 2023-09-05 14:59 lindexi 阅读(128) 评论(0) 推荐(0)
摘要: 本文告诉大家如何通过 Vortice 在 Direct2D 里面绘制图片,图片的来源是 WIC 加载出的图片 在上一篇博客 WPF 对接 Vortice 调用 WIC 加载图片 告诉了大家如何对接 Vortice 调用 WIC 加载图片,上一篇博客是将 WIC 层创建的 IWICBitmap 图片放 阅读全文
posted @ 2023-09-05 14:59 lindexi 阅读(19) 评论(0) 推荐(0)
摘要: 在很多性能测试开始之前,都需要测试一下自己的期望优化的设备的性能上限是多少。我每次都是重新写一个测试应用,因为每次需要优化的方向都不相同。本文将记录一个我写的一个简单的测试应用,这里面包含了一千个半透明的矩形,且矩形都在做动画。可以测试自己的电脑的性能,看看是否一千个带动画的半透明矩形就带不动 本文 阅读全文
posted @ 2023-09-05 14:59 lindexi 阅读(8) 评论(0) 推荐(0)
摘要: 本文将记录一些在 WPF 里面,使用 StaticResource 将 ResourceDictionary 玩坏的做法。大家可以放心的是,这些玩法基本只有高级玩家或逗比开发者才会使用到 阅读全文
posted @ 2023-09-05 14:58 lindexi 阅读(166) 评论(0) 推荐(0)
摘要: 本文记录一个 WPF 已知的设计问题,当前此问题已经被大佬修复,这个设计问题刚好属于比较边缘的模块,我写了这么多年的代码还没有踩到这个坑一次,也没有听到有谁提到这个坑 阅读全文
posted @ 2023-09-05 14:58 lindexi 阅读(20) 评论(0) 推荐(0)
摘要: 本文记录一个 WPF 已知问题,在 ContextMenu 的 Resources 里定义 Separator 的默认样式,在 ContextMenu 里面的 Separator 将应用不上,或者说不会找到此默认的样式。需要明确给 Style 一个 Key 且在 Separator 写明此 Key 才能应用上 阅读全文
posted @ 2023-09-05 14:58 lindexi 阅读(111) 评论(0) 推荐(0)
摘要: 本文记录一个 WPF 已知问题,在 ObservableCollection 的 CollectionChanged 事件里面,绕过 ObservableCollection 的异常判断逻辑,强行修改集合内容,修改之后的 UI 层将不能符合预期。本文将告诉大家此问题的复现方法和修复方法 阅读全文
posted @ 2023-09-05 14:58 lindexi 阅读(318) 评论(0) 推荐(0)
摘要: 本文记录一个 WPF 的已知问题,在通过 CollectionViewSource 获取到 CollectionView 之后,如果 CollectionViewSource 对象已被 GC 回收,将可能在调用 CollectionView 的 SortDescriptions 属性进行清空或者移除项时,也就是使用 SortDescriptionCollection 类型的清空或者移除项时,在 WPF 框架里面抛出空异常 阅读全文
posted @ 2023-09-05 14:58 lindexi 阅读(52) 评论(0) 推荐(0)
摘要: 在看到 Win10 或 Win11 的 Task Manager 任务管理器时,不知大家是否有一个疑问,在 进程 标签里的应用进程是如何分组的。为什么有些组能包含很多个不同的进程,有些只能包含一个。本文将使用 WPF 写一个简单的应用来告诉大家任务管理器的进程分组策略 阅读全文
posted @ 2023-09-05 14:58 lindexi 阅读(179) 评论(0) 推荐(0)
摘要: 我听说在 Win10 到 Win11 的系统版本左右,微软加上了一大波触摸性能优化,准确来说是 HID 性能优化。我想测试一下在这些系统下,采用从 Windows 消息接收到 WM_TOUCH 触摸消息的延迟将会是多少。本文将告诉大家我编写的测试应用 阅读全文
posted @ 2023-09-05 14:58 lindexi 阅读(113) 评论(0) 推荐(0)
摘要: 安装 Microsoft.WindowsAppSDK 库会限制应用程序只能分发 windows 10 应用,如果自己的应用程序依然需要兼容 Win7 等旧系统,那直接采用安装 WindowsAppSDK 方法将会丧失兼容旧系统能力。本文和大家介绍无需安装 Microsoft.WindowsAppSDK 即可使用 WinRT 功能的方法,此方法可以让应用程序继续兼容旧系统,可以在应用程序内判断系统版本之后自行决定调用 WinRT 功能 阅读全文
posted @ 2023-09-05 14:57 lindexi 阅读(118) 评论(0) 推荐(0)
摘要: 本文将告诉大家什么是 RealTimeStylus 以及如何从零开始不使用 WPF 框架提供的功能从 RealTimeStylus 获取到触摸信息 阅读全文
posted @ 2023-09-05 14:57 lindexi 阅读(196) 评论(0) 推荐(0)
摘要: 一般认为 WPF 的 Dispatcher 的 InvokeAsync 方法是 BeginInvoke 方法的平替方法和升级版,接近在任何情况下都应该在业务层使用 InvokeAsync 方法代替 BeginInvoke 方法。然而在异常的处理上,这两个方法还是有细微的差别的,不能说是坏事,依然可以认为使用 InvokeAsync 方法代替 BeginInvoke 方法是正确的。本文将记录这两个在抛出异常时,进入的统一异常处理事件的差别 阅读全文
posted @ 2023-09-05 14:57 lindexi 阅读(515) 评论(0) 推荐(0)
摘要: 本文记录一个 WPF 构建的坑,这是 WPF 仓库的运维管理大意挖的坑。将会在大家使用低版本的 dotnet 6 如 6.0.1 版本时,引用其他人使用高 dotnet 6 版本,如 dotnet 6.0.12 版本构建出来的使用 WPF 的程序集时,将会提示引用存在版本差异从而构建失败。本文将告诉大家如何解决以及原因 阅读全文
posted @ 2023-09-05 14:57 lindexi 阅读(590) 评论(0) 推荐(0)
摘要: 本文将和大家介绍在 UWP 应用,或其他能接入 WinRT 的应用里,使用系统自带的分词库,对中文、英文等等自然语言的字符串文本进行分词 阅读全文
posted @ 2023-09-05 14:57 lindexi 阅读(67) 评论(0) 推荐(0)
摘要: 这是一个在 dotnet 6 早就引入的功能,此功能的使用方法能简单,提升的效果也很棒。使用的时候需要将 Json 序列化工具类换成 dotnet 运行时自带的 System.Text.Json 进行序列化,再加上约 5 行的辅助代码,即可完成对接 阅读全文
posted @ 2023-09-05 14:56 lindexi 阅读(402) 评论(0) 推荐(2)
摘要: 在 Windows 系统上,有一个很重要的概念是 Windows Imaging Component 也就是 WIC 层,这是专门用来处理多媒体相关的系统组件,特别是用来处理图片相关,包括编码和解码和处理图片。开发者可以扩展 WIC 层的编解码器,从而让系统可以支持更多格式的多媒体文件。本文将告诉大家如何获取当前系统上在 WIC 层安装的图片编解码器,从而了解当前系统支持哪些格式的图片 阅读全文
posted @ 2023-09-05 14:53 lindexi 阅读(424) 评论(0) 推荐(1)
摘要: 本文告诉大家在拿到任意时区的 DateTimeOffset 对象,将 DateTimeOffset 转换为使用中国的 +8 时区表示的时间 阅读全文
posted @ 2023-09-05 14:53 lindexi 阅读(151) 评论(0) 推荐(0)
摘要: 很多伙伴喜欢使用 Console.WriteLine 打日志,也许是打起来顺手。打完了之后,又想着,要是能够输出到本机文件那就更好了。既然很多伙伴都有这个想法,那 dotnet 自然就是有方便的方法让咱来实现此需求。只需要调用 Console.SetOut 方法,即可将控制台的输出重定向到一个 TextWriter 里面,只要此 TextWriter 最终输出到本地文件里,即可实现将控制台的内容输出到文件。本文将来告诉大家这个实现方法 阅读全文
posted @ 2023-09-05 14:53 lindexi 阅读(483) 评论(0) 推荐(0)
摘要: 在 dotnet 里面,可以使用 Directory.EnumerateXXX 系列方法进行枚举文件或文件夹。在准备枚举驱动器根路径的文件或文件夹时,可能获取到错误的路径。错误的步骤在于传入的是如 C: 不带斜杠的路径,且存在同驱动器磁盘下的非根路径工作路径 阅读全文
posted @ 2023-09-05 14:53 lindexi 阅读(77) 评论(0) 推荐(0)
摘要: 这是一个半技术向的博客,主题来源于我读过的某本书的片段,这是一个稍稍有些前置知识的故事,主题的大概内容就是假定世界存在某个规则序列,通过一代代的探索,可以获取到此序列的内容。本文将模拟此情形,写一个随机数的小测试应用,来不严谨的证明,或者准确来说是用代码讲述这个故事 阅读全文
posted @ 2023-09-05 14:53 lindexi 阅读(34) 评论(0) 推荐(0)
摘要: 很多开发者,包括开发老司机们,在碰到需要调用 Win32 函数时,都有一个困扰,那就是我应该如何去调用。有两个主要的选项,第一就是自己写 PInvoke 代码,第二就是使用其他大佬给许多 Win32 函数封装好的库。然而这两个方法都有各有各的缺点,第一个方法缺点是可能工作量会很大,需要写方法,写结构体等等。第二个方法缺点是大佬封装的库,虽然全,但可惜里面有很多我用不着的函数,有些浪费。本文将来和大家介绍一个宝藏库,可以很好解决此问题 阅读全文
posted @ 2023-09-05 14:53 lindexi 阅读(249) 评论(0) 推荐(0)
摘要: 我在阅读 WPF 源代码,在 HwndWrapper 的静态构造函数看到了申请了 HwndWrapper.GetGCMemMessage 这个 Windows 消息,好奇这个消息是什么功能的。通过阅读 WPF 源代码和写测试应用,了解到这是一个完全用来内部测试或调试的消息,没有任何业务上的功能 阅读全文
posted @ 2023-09-05 14:53 lindexi 阅读(129) 评论(0) 推荐(0)
摘要: 本文将介绍如何使用系统内置 DISM 工具进行安全清理 C 盘空间,清理 WinSxS 文件夹里面的可回收删除的程序包空间 阅读全文
posted @ 2023-09-05 14:53 lindexi 阅读(8878) 评论(0) 推荐(0)
摘要: 通过在 WPF 项目上安装 WindowsAppSDK 库,可以让 WPF 使用上 Win10 及以上版本提供的 Windows Runtime 强大的 API 集和使用上更多的黑科技。本文记录在安装 WindowsAppSDK 库之后,项目生成失败,提示 NETSDK1082 和 NETSDK1112 错误的问题,和修复的方法 阅读全文
posted @ 2023-09-05 14:53 lindexi 阅读(109) 评论(0) 推荐(0)
摘要: 本文记录我了解的在一段多行文本里面,文本库对于光标行为的定义 阅读全文
posted @ 2023-09-05 14:53 lindexi 阅读(45) 评论(0) 推荐(0)
摘要: 本文记录联软 UniAccess 注入的 C:\Window\LVUAAgentInstBaseRoot\syswow64\MozartBreathCore.dll 导致 NSIS 安装包启动进程失效,启动进程直接结束问题。且给出 NSIS 安装包脚本的规避方法 阅读全文
posted @ 2023-09-05 14:53 lindexi 阅读(449) 评论(0) 推荐(0)
摘要: 我最近遇到了一个有趣的 Bug 让我调试了半天,这个 Bug 的现象是我的好多个模块都因为读取不到配置信息而炸掉,开始我没有定位到具体的问题,以为是我的配置服务器挂掉了。经过了半天的调试,才找到了是我新加入的使用 COIN 配置库的 ReadonlyCoinConfiguration 类型导致的,此 ReadonlyCoinConfiguration 类型继承 IConfigurationProvider 接口,但是我对 IConfigurationProvider 的 GetChildKeys 方法的理解不对,实现错了 GetChildKeys 方法,导致在枚举应用内的所有配置时,配置都会 ReadonlyCoinConfiguration 过滤掉,导致模块读取不到配置。本文将告诉大家 IConfigurationProvider 的 GetChildKeys 方法用途和如何正确实现他 阅读全文
posted @ 2023-09-05 14:53 lindexi 阅读(31) 评论(0) 推荐(0)
摘要: 本文将记录 dotnet 的一个已知问题,且是设计如此的问题。假定有一个 TaskCompletionSource 对象,此对象的 Task 没有被任何地方引用等待。在 TaskCompletionSource 被调用 SetException 或 TrySetException 方法时,将会记录一个存在异常且未捕获的 Task 对象。此 Task 对象将会在被 GC 回收时,进入 TaskScheduler.UnobservedTaskException 事件里面,尽管没有明确副作用,但是会吓到不明真相的开发者 阅读全文
posted @ 2023-09-05 14:53 lindexi 阅读(50) 评论(0) 推荐(0)
摘要: 在 WPF 里面的 GlyphRun 里,有一个令人迷惑的 DeviceFontName 属性,似乎给这个属性传入什么值,结果都不会有变更。通过阅读源代码,可以了解到,这是一个没什么用途的属性。本文将告诉大家这个属性的细节逻辑 阅读全文
posted @ 2023-09-05 14:53 lindexi 阅读(19) 评论(0) 推荐(0)
摘要: 在 dotnet 里面的 ConcurrentDictionary 是一个支持并发读写的线程安全字典,在这个字典里面有一些行为会出现随机性,即多次执行相同的代码返回的结果可能不相同。本文记录在 ConcurrentDictionary 使用 FirstOrDefault 获取到非预期的首项的问题 阅读全文
posted @ 2023-09-05 14:53 lindexi 阅读(98) 评论(0) 推荐(0)
摘要: 在使用 System.IO.File.Exists 方法时,绝大部分的情况下都是一个非常快捷且没有成本的,但是如果判断的文件是否存在,是从非自己完全控制的逻辑下进入的,那就需要警惕是否判断的文件路径属于一个网络资源。判断一个网络资源是否存在,是一个耗时不可确定行为,很有可能造成主线程卡顿 阅读全文
posted @ 2023-09-05 14:53 lindexi 阅读(39) 评论(0) 推荐(0)
摘要: 我的坑队友给我推荐了一本书,开始他吹的特别好,然而我花了一点时间下载下来,再看了几页之后,我发现这就是一本毒鸡汤。然而看都看了,还是要写写读书笔记的 阅读全文
posted @ 2023-09-05 14:53 lindexi 阅读(73) 评论(0) 推荐(0)
摘要: 本文记录我对于 AI 助手在未来给各大应用或网站或设备带来的影响的思考 阅读全文
posted @ 2023-09-05 14:53 lindexi 阅读(73) 评论(2) 推荐(0)
摘要: 从业务代码构建出来 GlyphRun 对象,在 WPF 的渲染层里,如何利用 GlyphRun 提供的数据将字符在界面呈现出来。本文将和大家聊聊从 WPF 的渲染层获取到 GlyphRun 数据,到调用 DirectX 的各个渲染相关方法的过程,也就是 WPF 绘制文本字符的原理或者实现方法 阅读全文
posted @ 2023-09-05 14:53 lindexi 阅读(137) 评论(0) 推荐(0)
摘要: 本文将介绍微软开源免费的 SizeBench 工具,使用 SizeBench 工具可以用来分析 Exe 二进制文件的体积,分析 Exe 文件大小里面有哪些是可以优化的 阅读全文
posted @ 2023-09-05 14:53 lindexi 阅读(215) 评论(0) 推荐(0)
摘要: 本文告诉大家一些收藏的开发者工具 阅读全文
posted @ 2023-09-05 14:53 lindexi 阅读(211) 评论(0) 推荐(0)
摘要: 在应用软件启动过程中,客户端应用软件是对性能敏感的。比如在解析命令行参数的时候,有时候需要进行字符串处理逻辑。一般来说命令行参数都是语言文化无关的,在需要进行全大写或全小写转换过程中,采用 ToUpperInvariant 替换 ToUpper 方法可以避免初始化 icu 模块,减少 icu 模块初始化过慢影响启动性能 阅读全文
posted @ 2023-09-05 14:52 lindexi 阅读(74) 评论(0) 推荐(0)
摘要: 本文将告诉大家如何从控制台而不是 WinUI3 模版项目,从零一步步创建出 WinUI 3 应用 阅读全文
posted @ 2023-09-05 08:44 lindexi 阅读(402) 评论(0) 推荐(0)
摘要: 本文将告诉大家如何在分析器里面获取到项目的默认命名空间 阅读全文
posted @ 2023-09-05 08:44 lindexi 阅读(78) 评论(0) 推荐(0)
摘要: 本文属于 OpenTK 入门博客,这是一项使用 C# 做底层调用 OpenGL 和 OpenAL 和 OpenCL 的技术。但值得一提的是,如果是想做渲染相关的话,当前是不建议使用 OpenGL 的,无论是从性能上还是其他方面,都不具备优势 阅读全文
posted @ 2023-09-05 08:44 lindexi 阅读(680) 评论(0) 推荐(0)
摘要: 本文介绍在 WPF 里面的字体属性 FontStyle 的 Italic 和 Oblique 的斜体差别 阅读全文
posted @ 2023-09-05 08:44 lindexi 阅读(221) 评论(0) 推荐(0)
摘要: 本文将告诉大家如何通过 Vortice 库从底层的方式使用 WIC 层加载本地图片文件,解码为 IWICBitmap 图片,然后将 IWICBitmap 图片交给 WPF 进行渲染 阅读全文
posted @ 2023-09-05 08:44 lindexi 阅读(92) 评论(0) 推荐(0)
摘要: 本文将告诉大家如何在分析器里面解析代码里面对于 ValueTuple 的定义,包括如何获取 ValueTuple 里面的 Item 的类型和命名 阅读全文
posted @ 2023-09-05 08:44 lindexi 阅读(70) 评论(0) 推荐(1)
摘要: 自定义控件时,如果自定义的控件需要用来接收键盘消息或者是输入法的输入内容,那就需要关注到控件的焦点 阅读全文
posted @ 2023-09-05 08:44 lindexi 阅读(913) 评论(0) 推荐(1)
摘要: 触摸在 Windows 下属于比较特殊的输入,不同于键盘和鼠标,键盘和鼠标可以通过全局 Hook 的方式获取到鼠标和键盘的输入消息。而触摸则没有直接的 Hook 的方法。如果期望自己的应用,可以在没有作为前台获取焦点的应用时,可以抓取到全局的触摸消息,抓取到其他应用程序的触摸输入,那么可以尝试使用 RawInput 的方式。通过 RawInput 的方式,可以让一个没有任何激活的、触摸直接命中的窗口的应用程序接收到全局的所有触摸消息 阅读全文
posted @ 2023-09-05 08:44 lindexi 阅读(250) 评论(0) 推荐(0)
摘要: 我将在一个 .NET Framework 项目升级到 dotnet 6 时发现构建不通过,因为原先的代码使用到了 EnumeratorToEnumVariantMarshaler 类型,在 dotnet 6 里面找不到。本文将告诉大家如何修复此问题 阅读全文
posted @ 2023-09-05 08:44 lindexi 阅读(42) 评论(0) 推荐(0)
摘要: 本文将告诉大家如何通过 Vortice 使用 D2D 的特效 阅读全文
posted @ 2023-09-05 08:44 lindexi 阅读(33) 评论(0) 推荐(0)
摘要: 在开始编写 dotnet 的 Roslyn 分析器项目时,会被 VisualStudio 通过 RS1036 要求在项目文件配置上 EnforceExtendedAnalyzerRules 属性,本文将和大家介绍 EnforceExtendedAnalyzerRules 属性的作用 阅读全文
posted @ 2023-09-05 08:44 lindexi 阅读(168) 评论(0) 推荐(0)
摘要: 本文将继续和大家介绍 SemanticKernel 神奇的魔法,将使用 LLM 大语言模型编写的自然语言函数和传统的编程语言编写的函数融合到一起的例子。通过本文的例子,大家可以看到 SemanticKernel 框架所推荐的一个工作模式,同时可以更好的理解 SemanticKernel 框架的用法 阅读全文
posted @ 2023-09-05 08:44 lindexi 阅读(525) 评论(0) 推荐(0)
摘要: 我有一个需求就是将我的一些文件夹的内容同步到网盘上面去。但是我是不信任现在的各个网盘的,网盘的数据被我认为是会被泄露的数据,我需要同步的文件夹中,可能存在隐私的数据。于是我就想到了将文件夹里面的内容进行加密,将加密之后的内容再同步到网盘上面去。如此网盘泄露的数据是加密之后的数据,没有密码的前提下,其他人难以获取到我原本的文件内容。既然有这个需求,那就开发一个简单的应用吧。本文将告诉大家我开发的加密文件夹应用 阅读全文
posted @ 2023-09-05 08:44 lindexi 阅读(98) 评论(0) 推荐(0)
摘要: 我的 Fiddler 安装了许多插件,有一些插件存在 DLL 名冲突问题,比如多个不同的插件都存在名为 PluginCore.dll 但实际实现逻辑完全不相同的程序集。这就导致了多个插件的安装之间,如果没有将其放入到单独的文件夹内,将会因为文件名相同而冲突,让插件不能同时都安装。本文将和大家介绍 Fiddler 官方提供的将插件放在独立子文件夹的方法,用来解决 DLL 命名冲突 阅读全文
posted @ 2023-09-05 08:44 lindexi 阅读(83) 评论(0) 推荐(0)
摘要: 本文将告诉大家如何在 IIncrementalGenerator 增量 Source Generator 生成代码里面,在 Roslyn 分析器里面判断两个程序集是否存在引用关系 阅读全文
posted @ 2023-09-05 08:44 lindexi 阅读(109) 评论(0) 推荐(0)
摘要: 本文将告诉大家在 dotnet 里面的二进制基础处理知识,如何在 C# 里面将结构体数组和二进制数组进行相互转换的简单方法 阅读全文
posted @ 2023-09-05 08:44 lindexi 阅读(265) 评论(0) 推荐(0)
摘要: 本文将记录一个在 WPF 应用程序启动过程中的性能优化点。如果一个窗口需要设置 WindowStyle 属性,那么在窗口 EnsureHandle 之前,设置 WindowStyle 属性将会比在 EnsureHandle 之后设置快不少 阅读全文
posted @ 2023-09-05 08:44 lindexi 阅读(59) 评论(0) 推荐(0)
摘要: This article will tell you how to fix the prompt for a missing Windows App Runtime environment when running non-packaged WinUI 3 applications on a customer's machine. 阅读全文
posted @ 2023-09-05 08:44 lindexi 阅读(244) 评论(0) 推荐(0)
摘要: 本文收藏我给 WPF 做的性能测试。在你开始认为 WPF 的性能存在问题的时候,不妨来这篇博客里找找看我做过的测试。我记录的测试都是比较纯净的测试项目,没有业务逻辑的干扰,写法也正常,可以更加真实反映 WPF 的性能,减少因为奇怪的业务逻辑以及逗比的写法的影响 阅读全文
posted @ 2023-09-05 08:44 lindexi 阅读(177) 评论(0) 推荐(0)
摘要: 在上一篇博客的基础上,使用 dotnet 基金会新开源的 Silk.NET 库,让 Silk.NET 创建的 DX 设备和 WPF 对接渲染。接下来本文将告诉大家如何使用 Silk.NET 提供的 Direct2D 底层封装,在 WPF 上绘制出界面 接着上一篇博客 WPF 使用 Silk.NET 阅读全文
posted @ 2023-09-05 08:44 lindexi 阅读(20) 评论(0) 推荐(0)