林德熙 - 微软最具价值专家和 .NET 基金会成员
本文告诉大家如何使用 msbuild 的 ProduceOnlyReferenceAssembly 功能,将某个程序集里面仅导出其中的公开成员定义,而不包含具体的实现的方法
这几天在开始写论文,准备发的是elsevier,这个网站的instruction有问题,下载的东西基本上好多的错误,所以我就写博客记录。
在 WPF 里面,渲染可以从架构上划分为两层。上层是 WPF 框架的 OnRender 之类的函数,作用是收集应用程序渲染的命令。上层将收集到的应用程序绘制渲染的命令传给下层,下层是 WPF 的 GFX 层,作用是根据收到的渲染的命令绘制出界面。本文所聊的是渲染上层部分,在 WPF 框架是如何做到界面刷新渲染,包括此调用的顺序以及框架逻辑
在 WPF 中,使用 Stroke 类时,可能会出现内存泄露,原因是 DrawingAttributes 的事件被监听没有释放。本文将从源代码的角度告诉大家这个内存泄露问题和如何解决
从注册表可以拿到当前用户安装的 .NET Framework 版本,本文告诉大家如何解析这些信息
在 dotnet 里面,可以使用 Interlocked 进行原子命令更改 int 等的值,利用这个特性可以在一个固定足够长长度的数组里面,让多线程无锁等待写入值。因为没有锁的存在,无法保证读取时的安全,因此这样的集合只能被设计为只写的集合,只有在业务上完成了所有的写之后,才能作为可读的集合取出来
在运行到一些诡异的代码,这时的程序已经无法继续运行,需要退出,那么如何在记完日志之后在退出程序记录更多信息?可以通过 Environment.FailFast 里面添加字符串告诉用户当前的进程无法继续运行
如果写一个控制台程序,需要隐藏这个控制台程序,可以使用本文的方法
在 dotnet core 发布的时候,会使用很多文件,这样发给小伙伴使用的时候不是很清真,本文告诉大家一个非官方的方法通过 warp 将多个文件打包为一个文件
[Net.ServicePointManager]::SecurityProtocol = “tls12, tls11, tls” ; Invoke-WebRequest https://github.com/dgiagio/warp/releases/download/v0.3.0/windows-x64.warp-packer.exe -OutFile warp-packer.exe
在很大的项目开发,会发现项目引用的 dll 会很多,我想要按照不同的功能,将不同的 dll 放在不同的文件夹
本文告诉大家我对比的使用直接创建多个类和使用反射创建多个类的性能
经常我写一个类,作为一个工具类,小伙伴会问我这个类的性能,这时我就需要一个标准的工具进行测试。 本文告诉大家如何使用 benchmarkdotnet 做测试。
本文来告诉大家在C#很少有人会发现的科技。即使是工作了好多年的老司机也不一定会知道这些科技,如果觉得我是在骗你,那么请看看本文的内容
在 C# 8.0 的时候提供了可空字符串的判断,但是可空字符串和字符串的类型是不是不同的?
Packaging.DebUOS 是我所在的团队开发开源的一款专门用在为 dotnet 的应用制作成为符合要求的 UOS 统信系统软件安装包的工具,此工具可以辅助开发者使用现有的工具链经过简单的配置即可完成安装包的制作
本文将告诉大家如何将 Microsoft Agent Framework 与 豆包 对接
本文记录一个 ReSharper 已知问题,在在 Directory.Build.props 属性求值结果不能应用到项目里,此行为将导致 ReSharper 获取的构建文件与 VisualStudio 不同,导致了可能存在的冲突
通过管理员的 PowerShell 的 Add-MpPreference 和 Get-MpPreference 可分别设置和获取安全中心设置,进而添加进程或文件夹到 Windows 安全中心白名单
本文整理 dotnet 打包 CBB 组件为 NuGet 包时可以使用的配置的各个属性
本文记录一个开机自动启动实现方法,通过写入到注册表实现开机之后,用户登录完成之后让应用程序开机自启
本文将告诉大家如何将 Microsoft Agent Framework 与 DeepSeek 对接
本文记录我在考古印度尼西亚语言应该是 IN 还是 ID 时,考古到了的内容
本文记录 dotnet 9 的一个已知且当前已修问题。默认开启 CET 导致一些模块执行时触发崩溃
本文将记录我在多个不同的机器上,在不同的 CPU 型号上,执行相同的我编写的 dotnet 的 Benchmark 的代码,测试不同的 CPU 型号对 C# 系的优化程度。本文非严谨测试,数值只有相对意义
本文告诉大家如何在使用 IIncrementalGenerator 进行增量的 Source Generator 生成代码时,如何获取到当前正在分析的程序集所引用的所有的程序集,以及引用的程序集里面的所有类型
本文告诉大家如何在使用 IIncrementalGenerator 进行增量的 Source Generator 生成代码时,如何判断两个程序集之间是否存在 InternalsVisibleTo 关系
在应用程序运行的时,需要根据不同的配置执行不同的内容。有很多根据配置而初始化的功能往往是在应用程序启动的时候需要执行。对于很多类型的应用程序,特别是客户端的应用程序,启动的性能特别重要。也因此,在启动过程中需要依赖配置文件的不同配置而启动不同的功能时,就对配置文件的读写和解析性能提出了很高的要求 本文来和大家简单介绍我团队开源的 dotnetCampus.Configurations 高性能配置文件读写库。这个库不仅包含了配置文件的读取解析,还包括了自定义配置文件格式,也就是 COIN 硬币格式的配置文件。提供了多线程和多进程的读写安全的功能和毫秒级的配置文件读取解析性能,以及最低支持到 .NET Framework 4.5 框架
本文告诉大家一些收藏的开发者工具
我在写一个 UWP 文本阅读器,我需要提升性能,需要将文本按行绘制但是文本里面的换行分割规则有点坑,本文写了一个辅助的方法用于分割换行
我在团队内的几乎所有 dotnet 项目,包括 UWP 和 WPF 桌面端以及 Xamarin 移动端和 ASP.NET Core 后端等需要用到多语言的项目,我的多语言都是通过 YAML 写的,这样相对来说在项目比较小的时候维护方便。但是 YAML 写的文件要读取需要用到 YAML 解析等,这部分的解析速度不够快,于是我就写了一个工具,用于在软件构建的时候自动将 YAML 多语言文件构建为代码。这样不仅能提升软件的执行速度,还能减少软件发布时需要带出去 YAML 解析库
在客户端开发时可以通过轮询的方式拿到服务器端的数据,同时在客户端开发时,如果是将客户端也作为服务器端,那么之间的通讯将会十分简单。有个逗比的小伙伴想要用我的客户端魔改,但是他又不想学习什么知识,此时他需要拿到我客户端的实时信息,好在他知道一点 html 的知识,于是让我通过服务器发送事件 Server-Sent Events 而他写一个简陋的 html 去拿到我客户端的数据 这是一个简陋的开发端的工具,开源的好处就是,你觉得不爽,自己改哇。自己改不动就等开发者下班协助啦,本文就使用一个简单的方式在 asp dotnet core 实现服务器发送事件。虽然标题是 asp dotnet core 而实际上我的软件是一个桌面端软件
本文分析在 C# 中使用反射和配置文件和预编译做注入的性能,本文的数据是为预编译框架,开发高性能应用 - 课程 - 微软技术暨生态大会 2018 - walterlv提供
如果是自己搭建博客,有一个问题是如何写一篇新的文章就可以告诉读者,你写了一篇新的?一个简单方法是使用 rss ,RSS订阅是站点用来和其他站点之间共享内容的一种简易方式,即Really Simple Syndication(简易信息聚合),使用这个东西就可以把自己写的博客推送给读者。 本文告诉大家,如果在博客配置 rss 让读者可以订阅。
本文告诉大家给定点的集合,求点的集合的外接矩形