林德熙 - 微软最具价值专家和 .NET 基金会成员
在 C# 9.0 里面添加的一个新特性是支持协变返回类型,也就说子类重写了基类的抽象或虚拟方法,可以在返回值里面返回协变的类型,也就是返回值的类型可以是继承原本子类返回值类型的子类。本文将来从 IL 的层面和运行时告诉大家这个新特性为什么需要 dotnet 5.0 才能支持
默认的序列化对象为 XML 字符串时,是没有进行格式化的,也就是所有的内容都在相同的一行。本文告诉大家方法,在序列化对象时,转换的 XML 是格式化的。或者说拿到 XML 字符串,对这个 XML 字符串进行格式化
有一些界面逻辑包含了列表,列表里面的内容是咱可以预设置进去的,但是列表里面的内容是复杂的内容。此时我推荐使用 XmlDataProvider 提供数据,使用 XmlDataProvider 可以将所有逻辑都放在 XAML 上,十分清真
求向量的三角函数 sin 或 cos 的值,已知两个点,求两点相连线段角度
在 WPF 中,触摸默认通过 RealTimeStylus 实时触摸进来,根据官方文档,这个机制将会和 WM_Touch 触摸消息在同一个 HWND 是互斥的。而在 WPF 中按照机制,在没有禁用实时触摸下是不支持在窗口内收到 WM_Touch 触摸消息。因此想要在不禁用 WPF 实时触摸的情况下,获取 WM_Touch 触摸消息的一个方法是通过 WinForms 窗口来获取
在最近在做 WPF 框架开发的时候,看到了在 WPF 的 StaticExtension 里面,有部分逻辑采用了反射的方法去获取静态字段和静态属性。此时我第一个反应就是这部分逻辑的性能有锅,于是尝试了进行加上缓存来优化。但是在使用了 Benchmark 进行性能测试的时候发现了,其实加上了缓存的性能反而更差,也就是说在 dotnet 5 里面的反射获取静态字段和属性的性能没有想象的伤性能
我今天遇到了一个坑,我的服务器在经过了 Nginx 之后,发送的 POST 请求,如果请求里面有 Body 内容,那么 Kestrel 将会返回 400 错误,同时也不会经过任何的中间件
在使用 curl 时,可以采用 -u 加上用户名和密码,这个对应在 PowerShell 也就是不到 10 句话的事情
在使用 curl 时,可以采用 -u 加上用户名和密码,这个对应在 C# 里面也是两句话的事情。只是在 curl 里面封装好了,我通过工具人协助解决,于是就在这里记录一下
在 Windows 下,使用 .NET Framework 构建出来的应用,可以只有一个可执行文件,在可执行文件里面包含了 IL 代码。使用 .NET Core 构建出来的应用,将会包含一个 Exe 可执行文件,和对应的 Dll 文件,而 IL 代码将放在 Dll 文件里面。那么使用 .NET Framework 和使用 .NET Core 所输出的 Exe 可执行文件有什么差别,本文将从文件格式以及启动过程两个方面给大家聊聊这两个的不同
在构建 WPF 开源仓库的时候,需要先搭建 Perl 环境,此时大家是否想了解在 WPF 构建的哪里用到 Perl 工具
有小伙伴给我报了一个坑,那就是使用我的博客写的方法,在按下 ALT+ENTER 键时,将会让屏幕黑屏。其实原因就是默认的 DX 关联了 ALT+ENTER 快捷键,进入了全屏。本文来告诉大家如何解决
本文将告诉大家在拿到了 D3D11 的 Device 也就是 D3DDevice 之后,如何去获取 DXGI.Device 以及 DXGI.Factory 的方法
本文是记录在开发 WPF 框架遇到的问题。 在 WPF 框架里面,限制了 API 的变更,所有关于 API 的变动都会触发 API 兼容检查。只有在明确此 API 变更是合理的之后,才能被接受更改。而此兼容判断将会让一些本地构建失败,本文将告诉大家如何使用官方的方法重新创建 API 基准,让本地构建通过
在写 msbuild 预编译或编译调度逻辑时,如何知道当前执行的编译器使用的是上古版本的 msbuild 还是用了 dotnet core 内核的 Roslyn 编译器?本文解决的问题是我期望在 Windows 系统使用 .NET Framework 版本的工具,而在非 Windows 系统上,使用 dotnet core 版本的工具。原因是 .NET Framework 在开发者设备上都会有,用起来简单。而 dotnet core 提供了跨平台,可以在其他平台上使用
在 WPF 框架开发中,其实很少有开发者有足够的勇气去更改现有的框架逻辑,因为 WPF 的功能十分庞大,很难测试全。更多的开发都是加功能以及开放已有功能。整个 WPF 框架的大体设计是十分好的,可以在框架里面遵循对修改关闭的原则,定制化更多的是做注入,调用 internal 权限成员 本文告诉大家如何给 WPF 框架加入 InternalsVisibleToAttribute 特性让其他程序集可以访问 internal 权限成员
本文提供了一个最简的方法,可以用到整个 WPF 框架里面所有 internal 内部权限的成员的方法。这是一个我自己定制的 WPF 框架,可以在此基础上构建属于自己的定制化的 WPF 框架
本文来告诉大家我实际使用基准测试的在 .NET Core 3.1 的链表 LinkedList 和 Dictionary 字典的在元素增删的性能对比
在收到了反馈说有一份课件,打开解析就发现替换的元素不对,原因是这个课件里面的 Slide Master 里面存在一个元素的 id 和某个页面的元素 id 是相同的,这不符合 ECMA 376 的规范。通过读取文档的内容,发现这是 WPS 制作出来的 PPT 文件。本文做一个存档,用来告诉大家有这个坑
在 WPF 里面,默认标题栏的交互相对复杂,如按钮没有设置 WindowChrome.IsHitTestVisibleInChrome 属性为 True 那按钮是拿不到点击事件的。本文来告诉大家按钮 Button 的 IsEnabled 属性对 WindowChrome 的 IsHitTestVisibleInChrome 的影响
官方团队为了防逗比,默认将 OutputType 输出类型重定向为 WinExe 类型,这样能解决很多新手遇到的 WPF 项目显示出黑框控制台界面问题。而对于一些老司机来说,这个特点反而有点迷,特别是在尝试打开控制台调试的时候
在 WPF 中,如果是鼠标点击拖动窗口坐标,可以调用 Window 的 DragMove 方法,但是如果是触摸,就需要自己调用 Win32 的方法实现
在 WPF 中,使用 ResourceDictionary 本身不会受到创建线程同步影响,意味着可以在任意的线程创建 ResourceDictionary 资源字典,然后在任意线程使用。但是此时的读写需要有时间上的差距,否则将会多线程读写不安全。在 ResourceDictionary 有一个 CanBeAccessedAcrossThreads 属性用来决定在进行读写的时候是否加上锁,但这个属性是内部的,需要通过黑科技更改才能用上
本文来和大家聊聊在 WPF 里面在给 ResourceDictionary 设置 Source 属性时,在 WPF 框架里面做了哪些逻辑
我有一个古老的 dotnet core 3.1 的 asp dotnet core 项目,现在我准备将他升级到 dotnet 5 了。但是我不想和博客园一样翻车,因此我需要做一点集成测试的辅助,尽管依然还是翻车了,但是我要学习博客园伟大的精神,将在这个项目里面所做的所有自动化测试项目的方法写下来
本文来聊聊在 XP 系统里面,是如何在清空回收站的时候修改回收站图标的
在 WPF 的 XAML 中,如果将某个元素初始的时候设置 Visibility 为 Collapsed 的值,那么意味着这个元素将不会参与布局,就和不存在是一样的。那么这个元素是否会被创建在内存中?是会创建的
通过 ValueTask 可以用来提升软件整体的性能,使用方法也非常简单,本文将带大家简单的入门使用这个 ValueTask 的功能
在 WPF 中的 ResourceDictionary 资源字典大部分都是在 XAML 里面定义的,但是在 C# 代码定义一个资源字典也是可行的,只是写起来有点诡异
本文告诉大家如何在 MSBuild 里使用 MakeDir 创建文件夹
本文收藏我所了解的从 dotnet core 3 到 2020.11.10 发布的 dotnet 5 的 WPF 的变更
在使用 OpenXML SDK 进行 Office 文档的解析时,对幻灯片 PPTX 文档的页面解析也许会遇到页面顺序的问题,本文告诉大家在 Office 文档里面页面的序号和顺序之间的关系以及如何读取页面序号
本文告诉大家一个 WPF 的已知问题,如果窗口在创建的时候,设置在屏幕外,那这个窗口将不会进行实际的渲染,将这个窗口从屏幕外移到屏幕内的时候,将会出现窗口内容的一次闪烁。换句话说就是存在窗口内容的重渲染
我有一个 NuGet 库有新的版本,但是我的服务器速度不够快,此时我第一次使用 NuGet 还原找不到库。在我服务器索引完成之后,再次使用 NuGet 会依然找不到这个库,而此时服务器准备完成。这是 NuGet 的缓存的坑
我在和小伙伴玩 24 点这个游戏,但是我的计算速度比他慢,于是我就写了一个作弊的程序