lindexi

林德熙 - Windows 10 App Developer

林德熙

一些好用的 dotnet tool 工具

本文收藏一些好用的 dotnet tool 工具

dotnet 使用 OpenXML SDK 解析 Office 的项目符号 buNone 含义

在解析 PPT 文档的时候,文本是比较复杂的一部分,而因为很多有趣的坑,即使是微软大法也有一些诡异的设计,例如项目符号的是否显示

dotnet 不申请额外数组空间合并多个只读数组列表

我在写一个简单的功能,需要将两个不同的数组合并到一起,但是我的功能只是做只读,如果合并的方法需要申请额外的内存空间,将降低性能。本文写了一个简单的方法,通过判断下标的方法做遍历多个数组组合在一起,通过判断当前获取的下标在对应哪个数组下标范围内,返回对应数组的元素

SublimeText 配置跳转回上个光标坐标

在 VisualStudio 可以通过 ctrl+- 的功能,跳转到上个光标所在的坐标。如在多个方法之间跳转,可以通过这个快捷键快速实现。在 SublimeText 可以在菜单的 Goto 里面找到 Jump Back 功能,这个功能就是对应 VisualStudio 的跳转回上个光标的功能,也就是向后定位功能

dotnet OpenXML SDK 文本占位符解析

在使用 OpenXML SDK 解析 PPT 文档的文本占位符的时候,需要对 PPT 的格式有一定的了解,尽管整个 OpenXML SDK 包括文档等都很详细。但是有一些细节文档上虽然有写,但是没有强调一下,就被我忽略了

C# dotnet 自己实现一个线程同步上下文

昨天鹏飞哥问了我一个问题,为什么在控制台程序的主线程等待某个线程执行完成之后回来,是在其他线程执行的。而 WPF 在等待某个线程执行完成之后,可以回到主线程执行。其实这是因为在 WPF 和 WinForms 和 ASP.NET 框架里面都自己实现了线程同步上下文,通过线程同步上下文做到调度线程执行。本文就来和小伙伴聊一下如何自己实现一个线程同步上下文

C# dotnet 使用 TaskCompletionSource 实现暂停功能

在 C# 里面,可以使用 dotnet 的 TaskCompletionSource 方法自己实现一个异步任务,这个任务可以方便设置任务是否完成等做到让等待的过程继续或等待。根据这个功能可以解决在复杂的功能里面通过异步等待的方法实现暂停。做法就是等待一个异步任务,如果这个功能处于暂停,那么只需要让这个异步任务不结束,此时整个功能就会在等待,直到设置了异步任务完成

为何 WPF 对 vcruntime140 有引用

通过阅读 WPF 官方开源仓库的代码和文档,可以了解到在进行独立发布的时候会在仓库里面带上 vcruntime140 的原因

开源项目

这是我收藏的开源项目

dotnet C# 图片等比限制最大和最小大小缩放算法

本文只是告诉大家如何计算缩放之后的宽度和高度,不包含实际的图片缩放方法

使用 C# 写脚本的优势和方法

现在很方便就可以将 C# 作为某个脚本使用,本文这里的脚本指的是直接执行源代码的方式。现在是 2020 现在的 C# 默认在 dotnet 的支持下,可以作为脚本使用,本文将告诉大家使用 C# 写脚本的优势和方法

win10 uwp 颜色转换

本文告诉大家如何从字符串转颜色,从颜色转字符串

使用 .NET Core 在 MAC 下提供 Excel 的 Power Query 功能

什么是 Power Query 功能?这是一个数据连接技术,可以用来发现、连接、合并、提炼数据用来满足数据处理需要。这个技术已经开发了很多年了,主要是提供给 Excel 和 PowerBI 桌面版使用。这个技术现在是作为 Windows 下的应用功能,通过 C# 托管在 .NET Framework 的功能。本文主要告诉大家在 .NET Core 2.1 发布之后,可以使用 .NET Core 跨平台的能力赋予 MAC 设备 Power Query 的功能,微软的团队是如何从原本只有在 Windows 下才能运行的功能搬到 MAC 上

Windows 窗口样式 什么是 WS_EX_NOREDIRECTIONBITMAP 样式

我觉得我可以加入历史博物馆了,加入微软历史博物馆,本文也是和大家吹历史的博客

Windows 对全屏应用的优化

全屏应用对应的是窗口模式应用,全屏应用指的是整个屏幕都是被咱一个应用独占了,屏幕上没有显示其他的应用,此时的应用就叫全屏应用。如希沃白板这个程序。本文主要告诉大家从微软官方的文档以及考古了解到的 Windows 对全屏应用的优化,以及是如何进行的优化,方便小伙伴在撕的时候可以找到根据

GitHub 如何过滤某个作者的 MR 内容

在 WPF 开源仓库里面有大量的机器人的 MR 但是我想要了解现在 WPF 仓库有多少开发者在贡献代码,此时如何在 GitHub 中过滤某个作者的 MR 内容

GitHub Action 新上线 WPF .NET Core 自动构建模板

在很土豪的微软免费给大家提供 GitHub 的构建服务器受到了小伙伴们的一堆好评之后,微软最近推出了 WPF 的 .NET Core 版本的模板,可以快速上手 WPF 项目的自动构建,支持自动进行单元测试和打包,同时输出打包的文件

用 C# 写脚本 如何输出文件夹内所有文件名

大部分在 Windows 下的脚本都是使用 bat 或 cmd 写的,这部分的脚本对我来说可读性不好。这个可读性也是很主观的,对我来说用 C# 写脚本的可读性很强,但是换个小伙伴就不是了。在 .NET Core 下的 C# 可以通过 dotnet run 运行代码起来,此时特别适合用来写脚本

Office OpenXml SDK 文本段落允许标点溢出边界属性

在进行 PPT 解析的时候,因为 PPT 是支持在文本框里面的文本段落设置允许标点溢出边界可以在符号超过了文本框的长度,不会换行,而是显示在文本框之外

Unity3d 制作一个立体旋转相册

大概效果就是在空间放一个立方体,然后给他贴图,点击鼠标的时候切换贴图内容。按下方向键旋转立方体

手把手教你构建 WPF 框架的私有版本

在上一篇博客告诉了大家如何让 GitHub 的 Action 协助咱构建 WPF 官方源代码,但是上一篇博客只是构建成功而已,构建的输出内容还是拿不到。本文将告诉大家如何让 WPF 框架的源代码构建之后输出到私有的 NuGet 源上,方便构建出私有分支版本

Unity3d 连续按键处理和单次按键处理

某个按键按下不放叫连续按键,而仅在按下的首次处理叫单次按键处理。用途是在游戏中控制移动,例子是可以将用户点击鼠标左键时向前走一步,而点击鼠标右键时,只要按住不放就连续后退

dotnet 用 Microsoft.Diagnostics.Runtime 库写代码解析 DUMP 文件

在分析 DUMP 进行自动化调试的时候,很多时候只能通过 WinDbg 和命令行调用的方式,这样的方式很难做到灵活。同时编写各个命令行的难度也特别高,这在需要对命令行的输出进行不同的分支的判断时候,难度会更大。于是找到了 Microsoft.Diagnostics.Runtime 库,这个库提供了简单的方式,可以在 C# 里面用代码写分析 DUMP 的代码

手把手教你如何构建 WPF 官方开源框架源代码

从去年微软就将 WPF 开源了,差不多现在所有 WPF 的源代码都开源了。在学习框架的时候,我会做一些改动,期望能构建一个自己的版本进行测试。但是作为一个特别大的框架,想要构建跑起来可不是直接在 VisualStudio 里面点击一下运行就完成了,需要做很多的准备才可以。本文将一步步教你如何构建 WPF 框架源代码

dotnet 部署 github 的 Action 进行持续集成

被微软收购的 GitHub 现在十分土豪,提供了免费的服务器给咱构建。刚好微软对 dotnet 的支持是特别好的,毕竟还算半个自家的东西,大概只需要 3 分钟就可以在 github 上通过 Action 部署持续集成,本文以 SourceYard 作为例子告诉大家如何配置

Mobius 一个运行在 .NET Core 上的 .NET 运行时

一个 .NET 应用仅仅只是一块在 .NET 运行时上面运行的二进制代码。而 .NET 运行时只是一个能执行这项任务的程序。当前的 .NET Framework 和 .NET Core 运行时采用 C++ 编写,而 Mobius 是一个使用 C# 重写的 .NET 运行时,重写包括 JIT 编译和 GC 等,这些逻辑都将和 C++ 无关

WPF 让窗口激活作为前台最上层窗口的方法

在 WPF 中,如果想要使用代码控制,让某个窗口作为当前用户的输入的逻辑焦点的窗口,也就是在当前用户活动的窗口的最上层窗口,默认使用 Activate 方法,通过这个方法在大部分设备都可以做到激活窗口

Roslyn 如何使用 MSBuild ZipDirectory 压缩文件夹

在 csproj 文件或在 NuGet 的 Targets 文件中可以通过 Target 调用 ZipDirectory 任务用来制作压缩包,在构建的时候,可以用这个方法将某个输出文件夹等内容压缩输出

Windows 核心编程笔记 Direct2D 比 GDI 快的一部分

每次看圣经都有不同的收获,在阅读了内核相关的内容,发现了有从用户模式和内核模式切换的角度说明 Direct2D 比 GDI 快的一部分。但这不是说明 Direct2D 一定比 GDI 快,而是在应用程序消费在用户模式和内核模式切换的耗时这一部分是 Direct2D 更少

WinForms 下的高性能笔迹方法

在 WPF 中可以通过 StylusPlugIn 的方式快速从触摸线程拿到触摸数据,而 WinForms 没有这个机制,但是可以通过 Microsoft.Ink 组件和 WPF 相同在 RealTimeStylus 服务拿到触摸点

WPF 触摸到事件

本文从代码底层告诉大家,在触摸屏幕之后是如何拿到触摸点并且转换为事件

WPF 如何在静态资源定义字体大小

默认的 WPF 的字体大小的单位是像素,如果想要将字体大小使用 pt 点表示,写在 xaml 里面是直接添加 pt 后缀。但是此时如果在静态资源尝试定义的时候写上了 pt 将会在运行的时候提示无法转换

WPF 触摸底层 PenImc 是如何工作的

在 WPF 里面有其他软件完全比不上的超快速的触摸,这个触摸是通过 PenImc 获取的。现在 WPF 开源了,本文就带大家来阅读触摸底层的代码,阅读本文需要一点 C# 和 C++ 基础

VisualStudio 如何快速添加一个 Git Tag 推送

在 VisualStudio 的团队管理功能,提供了方便的添加 Tag 的方法,可以新建一个 Tag 添加 Tag 信息,同时推送某个特定的 Tag 到服务器。配合推 Tag 打包 NuGet 的方法,将可以让整套工具用起来特别爽,完全本地化打 Tag 推送就完成了 NuGet 服务器打包推送

让 snoop 支持 .NET Core WPF 调试

在最新的 snoop 3.0.0-alpha0116 版支持了 .NET Core 的 WPF 的调试,只需要下载安装最新版本就可以