摘要: 几个主流的输入法输入 rq 或者 sj 都可以得到预定义格式的日期或者时间。然而他们都是预定义的格式;当我们需要一些其他格式的时候该怎么做呢? 本文将介绍几个常用输入法自定义时间和日期格式的方法。 主流输入法的日期格式一般是这样的: ▲ 微软拼音 ▲ 搜狗拼音 ▲ QQ 拼音 如果自定义,可以是这样 阅读全文
posted @ 2018-08-27 22:48 walterlv 阅读(3068) 评论(0) 推荐(0) 编辑
摘要: .NET 的 Process 类中提供了查找进程的若干方法,其中部分方法还比较消耗性能。如果你试图优化查找进程相关方法的性能,可能本文分享的一些耗时数据可以作为参考。 性能比较 Process 类中提供了四种查询进程的方法: GetProcesses 获取当前计算机或远程计算机上运行的所有进程。 G 阅读全文
posted @ 2018-08-27 22:14 walterlv 阅读(782) 评论(0) 推荐(0) 编辑
摘要: 长文预警!!! UWP 程序有 .NET Native 可以将程序集编译为本机代码,逆向的难度会大很多;而基于 .NET Framework 和 .NET Core 的程序却没有 .NET Native 的支持。虽然有 Ngen.exe 可以编译为本机代码,但那只是在用户计算机上编译完后放入了缓存中 阅读全文
posted @ 2018-08-27 22:10 walterlv 阅读(1790) 评论(0) 推荐(0) 编辑
摘要: 在 .NET Framework 4.7 以前,WPF 程序的触摸处理是基于操作系统组件但又自成一套的,这其实也为其各种各样的触摸失效问题埋下了伏笔。再加上它出现得比较早,触摸失效问题也变得更加难以解决。即便是 .NET Framework 4.7 以后也需要开发者手动开启 Pointer 消息,并 阅读全文
posted @ 2018-08-27 22:02 walterlv 阅读(437) 评论(0) 推荐(0) 编辑
摘要: 手工在博客中添加 Front Matter 文件头可是个相当费事儿的做法,这种事情就应该自动完成。 .NET 中提供了非常方便的修改文件创建时间的方法,使用这种方法,能够帮助自动完成一部分文件头的编写或者更新。 相关类型 .NET 中提供了两个不同的设置创建和修改时间的入口: File 静态类 Fi 阅读全文
posted @ 2018-08-27 21:58 walterlv 阅读(6569) 评论(0) 推荐(0) 编辑
摘要: 我们有很多全局的工具能在各处使用命令行调用,针对某个仓库特定的命令可以放到仓库中。不过,如果能够直接为顺手的文本编辑器添加自定义的外部命令,那么执行命令只需要简单的快捷键即可,不需要再手工敲了。 写一个外部命令的调用 由于是调用外部工具,所以工具本身用什么语言写已经不重要的了,只要有环境,没有什么是 阅读全文
posted @ 2018-08-27 21:57 walterlv 阅读(4944) 评论(0) 推荐(1) 编辑
摘要: UWP 程序天生单实例。当然,新 API (10.0.17134)开始也提供了多实例功能。不过,传统 Win32 程序可就要自己来控制单实例了。 本文介绍简单的几个 Win32 方法调用,使 Win32 程序也支持单实例。 激活之前进程的窗口 我们可以通过进程名称找到此前已经启动过的进程实例,如果发 阅读全文
posted @ 2018-08-27 21:56 walterlv 阅读(558) 评论(0) 推荐(0) 编辑
摘要: GitHub 重点在开方源代码,其本身还是非常注重隐私的。这一点与面向企业的 GitLab 很不一样。 不过,你依然可能在 GitHub 上泄露隐私信息,例如企业内部所用的电子邮箱。 GitHub 对个人隐私的尊重 git 的设定,开发者需要设置自己的邮箱: ▲ git 的邮箱设置(即便是公开的邮箱 阅读全文
posted @ 2018-08-27 21:55 walterlv 阅读(2445) 评论(0) 推荐(0) 编辑
摘要: 各种操作系统的控制台都支持 ANSI 转义序列(ANSI Escape Code)。使用转义序列,可以对控制台进行很多额外的定制,例如修改颜色、修改标题栏,将文字添加下划线等。 当然,.NET 已经帮助我们封装了很大的一部分功能了,我们重点可以放在 .NET 没有封装的那部分上。 基本的准备代码 在 阅读全文
posted @ 2018-08-27 21:52 walterlv 阅读(712) 评论(0) 推荐(1) 编辑
摘要: WPF 自定义窗口样式有多种方式,不过基本核心实现都是在修改 Win32 窗口样式。然而,Windows 上的应用就应该有 Windows 应用的样子嘛,在保证自定义的同时也能与其他窗口样式保持一致当然能最大程度保证 Windows 操作系统上的体验一致性。 本文将分享一个我自制的标题栏按钮样式,使 阅读全文
posted @ 2018-08-27 21:42 walterlv 阅读(664) 评论(2) 推荐(0) 编辑
摘要: .NET Core 2.1 和 C# 7.2 带来了 Span 的原生支持,原本需要使用不安全代码操作的内存块现在可以使用安全的方式来完成。此前在性能和稳定性上需要有所取舍,而现在可以兼得了。简单的例子先来看一个字符串处理时使用 Span 的最简单的例子:u... 阅读全文
posted @ 2018-07-27 07:27 walterlv 阅读(4950) 评论(0) 推荐(0) 编辑
摘要: 有些窗口天生就是为了辅助其它程序而使用的,典型的如“输入法窗口”。这些窗口不希望抢夺其它窗口的焦点。 有 Win32 方法来解决这样的问题,WS_EX_NOACTIVATE 便是关键。 具体来说,是给窗口样式中额外添加一个 WS_EX_NOACTIVATE 位。 当然,这里需要用到 P/Invoke 阅读全文
posted @ 2018-07-27 07:25 walterlv 阅读(2637) 评论(0) 推荐(1) 编辑
摘要: 每次使用 Visual Studio 的模板创建一个 UWP 程序,我们会在项目中发现大量的项目文件、配置、应用启动流程代码和界面代码。然而这些文件在 UWP 程序中到底是如何工作起来的? 我从零开始创建了一个 UWP 程序,用于探索这些文件的用途,了解 UWP 程序的启动流程。 本文分为两个部分: 阅读全文
posted @ 2018-07-27 07:19 walterlv 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 每次使用 Visual Studio 的模板创建一个 UWP 程序,我们会在项目中发现大量的项目文件、配置、应用启动流程代码和界面代码。然而这些文件在 UWP 程序中到底是如何工作起来的? 我从零开始创建了一个 UWP 程序,用于探索这些文件的用途,了解 UWP 程序的启动流程。 本文分为两个部分: 阅读全文
posted @ 2018-07-27 07:17 walterlv 阅读(411) 评论(0) 推荐(0) 编辑
摘要: Roslyn 的 API 是非常易用的。即便如此复杂的 C# 语法,建立的复杂的 C# 语法树,还有其复杂的树遍历和修改过程,也都被其 API 包装得干净简洁。 而这背后是它的重要设计思路 —— 红绿树。 红绿树的影子 如果你是通过搜索找到这篇文章的,那么至少证明你调试过 Roslyn API 的使 阅读全文
posted @ 2018-07-19 20:10 walterlv 阅读(438) 评论(0) 推荐(0) 编辑
摘要: 使用 Roslyn 进行源码分析时,我们会对很多不同种类的语法节点进行分析。如果能够一次性了解到各种不同种类的语法节点,并明白其含义和结构,那么在源码分析的过程中将会更加得心应手。 本文将介绍 Roslyn 中各种不同的语法节点、每个节点的含义,以及这些节点之间的关系和语法树结构。 基本概念 以上是 阅读全文
posted @ 2018-07-19 20:04 walterlv 阅读(694) 评论(0) 推荐(0) 编辑
摘要: WPF 自定义窗口样式有多种方式,不过基本核心实现都是在修改 Win32 窗口样式。然而,Windows 上的应用就应该有 Windows 应用的样子嘛,在保证自定义的同时也能与其他窗口样式保持一致当然能最大程度保证 Windows 操作系统上的体验一致性。 本文将使用 WindowChrome 来 阅读全文
posted @ 2018-07-19 20:03 walterlv 阅读(576) 评论(0) 推荐(1) 编辑
摘要: NuGet 提供了工具类型的包支持,生成一个基于 .NET Core 的 dll 或者基于 .NET Framework 的 exe 之后,你几乎可以对项目做任何事情。但是,默认情况下,NuGet 不会将这些工具的依赖一起打包进入 NuGet 包 nupkg 文件内,这就使得功能比较复杂的跨平台 N 阅读全文
posted @ 2018-07-19 19:56 walterlv 阅读(410) 评论(0) 推荐(0) 编辑
摘要: 我们经常会使用条件编译符 #if DEBUG 在 Debug 下执行某些特殊代码。但是一旦我们把代码打包成 dll,然后发布给其他小伙伴使用的时候,这样的判断就失效了,因为发布的库是 Release 配置的;那些 #if DEBUG 的代码根本都不会编译进库... 阅读全文
posted @ 2018-07-05 21:02 walterlv 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 有那么一波小伙伴,多数时候都不需要用到鼠标,通常他们正好是“黑客”。当你开始使用键盘操作一切时,便能体会到无需用鼠标瞄准按钮时的干脆,无需在键盘和鼠标之间移动手时的轻松。 Chrome 原生自带大量快捷键,Vimium 在原生的基础上又增加了大量网页操作。结合两者,你完全能摆脱鼠标。 Chrome 阅读全文
posted @ 2018-07-05 21:01 walterlv 阅读(1131) 评论(0) 推荐(0) 编辑
摘要: XPath 是 XML 路径语言(XML Path Language),用来确定XML文档中某部分位置的语言。无论是什么语言什么框架,几乎都可以使用 XPath 来高效查询 XML 文件。 本文将介绍 .NET 中的 XPath 相关类型的使用。 本文读写的 XML 文件会以 文章末尾的代码 - 假 阅读全文
posted @ 2018-06-26 20:58 walterlv 阅读(380) 评论(0) 推荐(0) 编辑
摘要: XPath 是 XML 路径语言(XML Path Language),用来确定XML文档中某部分位置的语言。无论是什么语言什么框架,几乎都可以使用 XPath 来高效查询 XML 文件。 本文将介绍 XPath 的一些语法。 本文读写的 XML 文件会以 文章末尾的代码 - 假设的 XML 文件 阅读全文
posted @ 2018-06-26 20:57 walterlv 阅读(368) 评论(0) 推荐(0) 编辑
摘要: 不知从什么时候开始,头像流行使用圆形了,于是各个平台开始追逐显示圆形裁剪图像的技术。WPF 作为一个优秀的 UI 框架,当然有其内建的机制支持这种圆形裁剪。 不过,内建的机制仅支持画刷,而如果被裁剪的元素支持交互,或者拥有普通画刷无法达到的显示效果,那么就需要本文介绍的更加通用的解决方法了。 UWP 阅读全文
posted @ 2018-06-26 20:56 walterlv 阅读(659) 评论(0) 推荐(1) 编辑
摘要: Windows 向来是不区分文件和文件夹大小写的,但是从 NTFS 开始却又支持区分文件夹大小写。而 Linux/Mac OS 一向都是区分文件和文件夹大小写的。 本文将推荐 Windows 10 四月更新带来的新特性——让文件夹名称也能区分大小写。 本来文件系统是否区分大小写只是单纯风格上的差异, 阅读全文
posted @ 2018-06-26 20:54 walterlv 阅读(798) 评论(0) 推荐(0) 编辑
摘要: 如果你觉得你的类需要实现 IDisposable 接口,还是需要注意一些坑的。不过前人准备了 Dispose 模式 供我们参考,最大程度避免这样的坑。 C#程序中的 Dispose 方法,一旦被调用了该方法的对象,虽然还没有垃圾回收,但实际上已经不能再使用了。所以使用上要仔细考虑细节。 需要明确一下 阅读全文
posted @ 2018-06-26 20:52 walterlv 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 我曾经写过一篇文章 如何创建一个基于命令行工具的跨平台的 NuGet 工具包,通过编写一个控制台程序来参与编译过程。但是,相比于 基于 Task 的方式,可控制的因素还是太少了。 有没有什么办法能够让控制台程序也能与 MSBuild Target 之间发生更多的信息交换呢?答案是有的,通过捕获控制台 阅读全文
posted @ 2018-06-26 20:51 walterlv 阅读(503) 评论(0) 推荐(0) 编辑
摘要: 日常的开发中,获取绝对文件路径才是主流吧!连 Path.GetFullPath 这种生成绝对路径的方法都已经成为 .NET Standard 的一部分了。 然而,生成相对路径依然有用——比如你的配置文件是相对于工作目录的,必须这个路径是输出给用户看的…… 那么,既然 Path 没有生成相对路径的方法 阅读全文
posted @ 2018-06-26 20:48 walterlv 阅读(633) 评论(0) 推荐(0) 编辑
摘要: 一次我走到了弱网环境中,意外地发现浏览器打开了 http://www.msftconnecttest.com/redirect 网址,随后右下角的网络图标出现了一枚“感叹号”。 吹水的推断 从直观看来,这个网址的连通性和网络图标上的“感叹号”有着直接的联系。那么到底有没有联系呢?于是去知乎上看看,发 阅读全文
posted @ 2018-06-26 20:48 walterlv 阅读(2399) 评论(0) 推荐(0) 编辑
摘要: 本文将解释在 .NET 技术栈中各种不同使用方式下 N E T 三个字母何时大写何时小写;前面的 “.” 什么时候加上,什么时候去掉,什么时候又使用 “dot”。 .NET 在技术文档中 如果你阅读过 https://docs.microsoft.com/zh-cn/dotnet/ 中的多数 .NE 阅读全文
posted @ 2018-06-04 11:28 walterlv 阅读(564) 评论(0) 推荐(0) 编辑
摘要: Roslyn 是微软为 C# 设计的一套分析器,它具有很强的扩展性。以至于我们只需要编写很少量的代码便能够编译并执行我们的代码。 作为 Roslyn 入门篇文章之一,你将可以通过本文学习如何开始编写一个 Roslyn 扩展项目 —— 编译一个类,然后执行其中的一段代码。 本文是 Roslyn 入门系 阅读全文
posted @ 2018-06-02 09:23 walterlv 阅读(680) 评论(0) 推荐(0) 编辑