自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

walterlv - 吕毅

欢迎访问 https://blog.walterlv.com/ 热爱设计,不止是程序,更是艺术!

原创 使用 SetWindowCompositionAttribute 来控制程序的窗口边框和背景(可以做 Acrylic 亚克力效果、模糊效果、主题色效果等)

Windows 系统中有一个没什么文档的 API,SetWindowCompositionAttribute,可以允许应用的开发者将自己窗口中的内容渲染与窗口进行组合。这可以实现很多系统中预设的窗口特效,比如 Windows 7 的毛玻璃特效,Windows 8/10 的前景色特效,Windows...

2019-11-27 07:58:55

阅读数 484

评论数 3

原创 通过设置启用 Visual Studio 默认关闭的大量强大的功能提升开发效率

使用 Visual Studio 开发 C#/.NET 应用程序,以前有 ReSharper 来不足其各项功能短板,后来不断将 ReSharper 的功能一点点搬过来稍微好了一些。不过直到 Visual Studio 2019,才开始渐渐可以和 ReSharper 拼一下了。 如果你使用 Visu...

2019-10-28 09:31:22

阅读数 347

评论数 0

原创 .NET 将多个程序集合并成单一程序集的 4+3 种方法

编写 .NET 程序的时候,我们经常会在项目的输出目录下发现一大堆的文件。除了我们项目自己生成的程序集之外,还能找到这个项目所依赖的一大堆依赖程序集。有没有什么方法可以把这些依赖和我们的程序集合并到一起呢? 本文介绍四种将程序集和依赖打包合并到一起的方法,每一种方法都有其不同的原理和优缺点。我将介...

2019-08-30 15:03:48

阅读数 325

评论数 0

原创 文件被占用?系统自带的“资源监视器(resmon)”也能帮你找到占用它的真凶

文件或文件夹被占用,然后无法删除?这真的很恼人。关键是还不知道究竟是哪个程序占用的,想退出都不行。 有各种工具解决此问题,平时下载屯着他们能够省下不少事儿。如果突然间情况非常紧急怎么办?学会使用本文介绍的系统自带工具“资源监视器”,也能立即着手找到真凶! 删除拒绝提示: ▲ 文件夹访问被拒绝 ...

2020-03-31 08:40:34

阅读数 43

评论数 0

原创 .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter

林德熙 小伙伴希望保存一个文件,并且希望如果出错了也要不断地重试。然而我认为如果一直错误则应该对外抛出异常让调用者知道为什么会一直错误。 这似乎是一个矛盾的要求。然而最终我想到了一个办法:让重试一直进行下去,谁需要关心异常谁就去 catch 异常,不需要关心异常的模块则跟着一直重试直到成功。 我们...

2020-03-31 07:57:50

阅读数 38

评论数 0

原创 git 如何更可靠地解决冲突?

使用 git 合并代码时出现冲突是很常见的,不过如何解冲突才能更加可靠呢?不漏掉别人的修改,也同时让自己的修改完全保留。 本文将介绍利用各种工具更可靠地解决冲突。 本文内容使用 Visual Studio 使用 Visual Studio 如果你使用 Visual Studio,那么当合并两个分...

2020-03-31 07:54:14

阅读数 35

评论数 0

原创 了解 .NET/C# 程序集的加载时机,以便优化程序启动性能

林德熙在 C# 程序集数量对软件启动性能的影响 一文中说到程序集数量对程序启动性能的影响。在那篇文章中,我们得出结论,想同类数量的情况下,程序集的数量越多,程序启动越慢。 额外的,不同的代码编写方式对程序集的加载性能也有影响。本文将介绍 .NET 中程序集的加载时机,了解这个时机能够对启动期间程序...

2020-03-31 07:50:13

阅读数 56

评论数 0

原创 用 dotTrace 进行性能分析时,Timeline 打不开?无法启动进程?也许你需要先开启系统性能计数器的访问权限

对 .NET 程序使用 dotTrace 进行性能分析时,你也可能遭遇到 dotTrace 的 Bug。我就遇到了性能分析选项 Timeline 打不开进程的情况。 本文内容dotTrace 的性能分析选项Timeline 打不开?解决方法启动“计算机管理”配置性能监视器用户组添加自己作为用户组...

2020-03-31 07:49:05

阅读数 41

评论数 0

原创 在 Visual Studio Code 中添加自定义的代码片段

无论是那个编辑器,如果能够添加一些自定义代码片段,能够大大提升代码的输入效率。 本文介绍如何在 Visual Studio Code 中添加自定义代码片段。 本文内容Visual Studio Code 的代码片段设置编写代码片段插入代码片段一个更复杂的例子关于代码片段编写的更多细节关于文件名称...

2020-03-31 07:47:58

阅读数 33

评论数 0

原创 在 Visual Studio 中使用 EditorConfig 统一代码风格(含原生与插件)

EditorConfig 是一种被各种编辑器广泛支持的配置,使用此配置有助于项目在整个团队中保持一致的代码风格。Visual Studio 2017 开始原生支持 EditorConfig。 本文将介绍 Visual Studio 对 EditorConfig 的支持情况(含原生与插件),并给出符...

2020-03-31 07:46:39

阅读数 35

评论数 0

原创 在 Visual Studio Code 中为代码片段(Code Snippets)添加快捷键

Visual Studio Code 默认是关闭了 Markdown 的智能感知提示的(因为真的是不好用,尤其是其没有中文分词的情况下)。那么在没有智能感知提示的情况下如何快速插入代码片段呢? 可以使用快捷键! 本文介绍如何为代码片段绑定快捷键。 代码片段本没有快捷键相关的字段可供设置的,不过在...

2020-03-31 07:44:33

阅读数 33

评论数 0

原创 WPF 中那些可跨线程访问的 DispatcherObject(WPF Free Threaded Dispatcher Object)

众所周知的,WPF 中多数对象都继承自 DispatcherObject,而 DispatcherObject 带给这些对象一个特点:不能跨线程访问。 不过,WPF 中依然存在一些例外。本文将介绍 WPF 那些可跨线程访问的 DispatcherObject,如何充分利用这个特点提高应用程序的性能...

2020-03-31 07:43:35

阅读数 23

评论数 0

原创 C#/.NET 中 Thread.Sleep(0), Task.Delay(0), Thread.Yield(), Task.Yield() 不同的执行效果和用法建议

在 C#/.NET 中,有 Thread.Sleep(0), Task.Delay(0), Thread.Yield(), Task.Yield() 中,有几种不同的让当前线程释放执行权的方法。他们的作用都是放弃当前线程当前的执行权,让其他线程得以调度。但是他们又不太一样。 本文说说他们的原理区别...

2020-03-31 07:42:39

阅读数 34

评论数 0

原创 csproj 文件中那个空的 NuGetPackageImportStamp 是干什么的?

当我们在传统格式的 csproj 项目文件中安装 NuGet 包后,有时会在项目文件中发现空的 NuGetPackageImportStamp 节点。这个空的节点让我们这波强迫症患者觉得有点难以接受,关键是手工删除之后也没发现有什么副作用。 那么为什么会出现这个节点?它究竟有什么作用? 本文内容...

2020-03-31 07:41:30

阅读数 24

评论数 0

原创 使用并解析 OPML 格式的订阅列表来转移自己的 RSS 订阅(概念篇)

OPML 全称是 Outline Processor Markup Language ,即 大纲处理标记语言。目前流行于收集博客的 RSS 源,便于用户转移自己的订阅项目。 本文将介绍这个古老的格式,并提供一个 .NET 上的简易解析器。 本文分为两个部分,一个是理解 OPML 格式,一个是解析...

2020-02-29 14:23:03

阅读数 186

评论数 0

原创 使用并解析 OPML 格式的订阅列表来转移自己的 RSS 订阅(解析篇)

OPML 全称是 Outline Processor Markup Language ,即 大纲处理标记语言。目前流行于收集博客的 RSS 源,便于用户转移自己的订阅项目。 本文将介绍这个古老的格式,并提供一个 .NET 上的简易解析器。 本文是两个部分的第二篇,前者是理解 OPML 格式,此篇...

2020-02-29 14:22:27

阅读数 157

评论数 0

原创 UWP 中的各种文件路径(用户、缓存、漫游、安装……)

UWP 提供了多种不同文件路径访问方式,对应到不同的文件路径中。可能我们只是简单用 ApplicationData.Current 获取一下可以读写的路径便能应付我们应用日常所需的各种文件读写需求,不过,UWP 还提供了更多的路径选项。 本文将和你一起总结 UWP 中的各种各样的路径。 本文内容...

2020-02-29 14:21:28

阅读数 87

评论数 0

原创 只有你能 new 出来!.NET 隐藏构造函数的 n 种方法(Builder Pattern / 构造器模式)

如果你给类写了一个公有构造函数,那么这个类就能被其他开发者 new 出来。如果你不想让他们 new 出来,把构造函数 private 就好了呀。 然而还有更多奇怪的方式来隐藏你类的构造方法。 为什么要隐藏构造函数? 有些类型,只有组件的设计者才知道如何正确创建其类型的实例,多数开发者都无法正确...

2020-02-29 14:20:18

阅读数 80

评论数 0

原创 使用 Postman 调试 ASP.NET Core 开发的 API

使用 ASP.NET Core 开发简单的后台 API 还是非常容易的。涉及到 GET 请求的调试我们可以用浏览器简单搞定,那么 POST/PUT/DELETE 这样的请求呢? 本文将使用 Postman 来调试这些请求。 本文内容简单的 ASP.NET Core 程序模拟 GET 请求下载安装...

2020-02-29 14:15:40

阅读数 81

评论数 0

原创 .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)

这里我想说的是类型“实例”的缓存,适用于那些实例或者值计算很耗时的操作。典型的场景如反射获取 Attribute。 本文内容适用思路代码用法高性能创建对象高性能为属性赋值高性能“反射”调用函数附代码 适用 本文推荐的方法适用于相同的输入可以获得相同的输出,但是这个输入到输出的过程非常耗时。 大家...

2020-02-29 14:12:19

阅读数 58

评论数 0

原创 如何精准地用打印机在贺卡或邀请函上打字

当你有一堆带有空位的贺卡或邀请函,你是准备手写呢,还是准备打字呢?你的旁边恰巧有一位书法漂亮的 MM 那自不必说,然而如果字都像我这样写得丑,那还是选择打字好了。 然而,贺卡或邀请函不同于白纸,通常都是已经打印好有内容的。那么如何打印以便让所有文字的内容都对应到贺卡或邀请函的正确空位上,还是有些难...

2020-02-29 14:10:56

阅读数 95

评论数 0

原创 Windows 无法删除文件夹 —— 访问被拒绝 / 因为目录不是空的"

在日常使用 Windows 10 时,有时会遇到删除很普通的文件夹时提示“访问被拒绝”,以管理员权限重试后依然提示没有权限。如果使用命令行删除,则会提示“无法删除文件夹 XXX,目录不是空的。”。 本文将介绍其原因并提供解决方案。 本文内容删除文件夹遭到拒绝解决方案 删除文件夹遭到拒绝 有时我们...

2020-02-29 14:03:10

阅读数 98

评论数 0

原创 发布了一款库(或工具包),如何持续地编写更新日志(ChangeLog)?

据说程序员最讨厌的两件事是 “别人没有写文档” 和 “要我写文档”。 编写更新日志可是也落入此怪圈呢! 本文内容程序员不写文档自动化更新日志应该包含哪些内容手工和自动化的结合优秀文档的参考 程序员不写文档 来自 GitHub 的开源调查问卷结果直接显示,最令人头痛的莫过于文档了: Incomp...

2020-02-29 14:00:02

阅读数 42

评论数 0

原创 使用 C# 代码创建快捷方式文件

快捷方式是一种特殊的文件,扩展名为 lnk。有很多种方式来创建快捷方式,不过使用 C# 代码创建一个却并不那么容易。 本文分享三种不同的方式创建快捷方式。 随处可用的代码 这是最方便的方式了,因为这段代码随便放到一段代码中就能运行: /// <summary> /// 为当前正在运行...

2020-02-29 13:58:38

阅读数 57

评论数 0

原创 UWP 应用中 CoreApplication / Application, CoreWindow / Window 之间的区别

在 StackOverflow 上看到有小伙伴询问 CoreApplication, CoreApplicationView, Application, ApplicationView, CoreWindow, Window 它们的含义以及它们之间的区别。 于是我整理了这篇文章。 This po...

2020-02-29 13:57:22

阅读数 69

评论数 0

原创 图片点击放大,你的网页也能做到!

我经常在博客中插入大图,然而总需要借助浏览器的滚轮缩放功能放大观看实在是不方便。于是我希望做一个点击即放大的功能。 下面就是一张可点击放大的图片,你可以点击试试!当然,我期望的效果是自动对所有博客中的图片生效。 ▲ Fluent Design App Header 本文内容创建一个用于放图片的...

2020-02-29 13:56:23

阅读数 64

评论数 0

原创 UWP 扩展/自定义标题栏的方法,一些概念和一些注意事项

在 Windows 10 的前几个版本中将页面内容扩展到标题栏上还算简单,主要是没什么坑。直到一些新控件的引入和一些外观设计趋势变化之后,扩展标题栏开始出现一些坑了。 本文将重温 UWP 自定义标题栏或者扩展标题栏的方法,但更重要的是解决一些坑。 本文内容扩展/自定义标题栏一些概念一些坑控件在标...

2020-02-29 13:55:03

阅读数 47

评论数 0

原创 理解 UWP 视图的概念,让 UWP 应用显示多个窗口(多视图)

UWP 应用多是一个窗口完成所有业务的,事实上我也推荐使用这种单一窗口的方式。不过,总有一些特别的情况下我们需要用到不止一个窗口,那么 UWP 中如何使用多窗口呢? 本文内容为什么 UWP 需要多窗口?UWP 视图的概念UWP 多窗口管理多个 UWP 视图 为什么 UWP 需要多窗口? 多窗口在...

2020-02-29 13:53:39

阅读数 117

评论数 0

原创 语法高亮不够漂亮?这里有你想要的 Rouge 主题

写了那么久的代码,找到了满意的代码着色风格吗?想必文本编辑器的代码着色风格你已经找到了中意的了,那么你在网上 post 上去的代码呢? Rouge 是一款基于 Ruby 的语法高亮工具,能为你的代码生成漂亮的语法高亮样式。本文将介绍如何使用它,并为大家提供它默认的语法高亮样式预览。 在 Jeky...

2020-02-29 13:51:46

阅读数 153

评论数 0

原创 .NET/C# 使窗口永不激活(No Activate 永不获得焦点)

有些窗口天生就是为了辅助其它程序而使用的,典型的如“输入法窗口”。这些窗口不希望抢夺其它窗口的焦点。 有 Win32 方法来解决这样的问题,WS_EX_NOACTIVATE 便是关键。 具体来说,是给窗口样式中额外添加一个 WS_EX_NOACTIVATE 位。 var handle = Get...

2020-02-29 13:48:57

阅读数 49

评论数 0

原创 使用 IFTTT 做 RSS 的邮件订阅服务

IFTTT 是一个奇特的网络服务。它本身没有提供什么功能,但因为它的工作方式类似编程,所以你可以拿它做各种各样难以想象的事情。 本文将使用 IFTTT 做一个 RSS 的邮件订阅服务。 本文内容IFTTT做一个 RSS 邮件订阅服务 IFTTT IFTTT 这种神奇的名字还是需要介绍一下的 ——...

2020-02-29 13:47:20

阅读数 124

评论数 0

原创 程序员与英语:即时聊天中的英语缩写 lol / lmao / idk

经常混迹各大英文开发者社区的你,是否会遇到一些奇怪的英文缩写呢?本文整理一些即时聊天中常用的缩写。 英语部分 lol Laughing out Loud Laugh out Loud Lots of Laughs Laugh Online 缩写可以说来源于上面那些,似乎意思是“好好笑啊”。然...

2020-02-29 13:43:41

阅读数 60

评论数 0

原创 使用 PInvoke.net Visual Studio Extension 辅助编写 Win32 函数签名

在 .NET 程序中使用 Win32 函数并不如 C++ 中方便。因为 C# 中不能引入 C++ 中常用的头文件,于是各种方法签名、结构体定义等等都需要各种寻找。然而 PInvoke.net 帮助我们解决了这个问题。本文推荐一款 Visual Studio 插件来帮助我们更快速地插入 Win32 ...

2020-02-29 13:41:53

阅读数 71

评论数 0

原创 Windows 10 应用创建模糊背景窗口的三种方法

现代的操作系统中创建一张图片的高斯模糊效果非常容易,不过如果要在窗口中获得模糊支持就需要操作系统的原生支持了。iOS/Mac 和 Windows 系统都对此有支持。 本文将介绍三种创建模糊背景窗口的方法。有人可能喜欢称之为毛玻璃窗口、亚克力窗口。 This post is written in ...

2020-02-29 13:38:39

阅读数 93

评论数 0

原创 如何在 .NET/C# 代码中安全地结束掉一个控制台应用程序?通过发送 Ctrl+C 信号来结束

我的电脑上每天会跑一大堆控制台程序,于是管理这些程序的运行就成了一个问题。或者说你可能也在考虑启动一个控制台程序来完成某些特定的任务。 如果我们需要结束掉这个控制台程序怎么做呢?直接杀进程吗?这样很容易出问题。我正在使用的一个控制台程序会写文件,如果直接杀进程可能导致数据没能写入到文件。所以本文介...

2020-01-28 17:56:00

阅读数 148

评论数 0

原创 .NET Standard 的管理策略

.NET Standard 作为各大 .NET 的标准,我们有必要了解一下它是如何在各种 .NET 的实现之间履行自己的职责的。所以,本文会说说它的管理策略。 本文内容都有哪些 .NET Standard 的实现?标准在前还是实现在前?标准之内还是使用标准?并不一定都能实现的标准 都有哪些 .N...

2020-01-28 17:53:34

阅读数 162

评论数 0

原创 长期支持 LTS(Long-term Support)是怎样的一种支持方式

在 .NET Core 2.1 发布之时,微软称之为一个 LTS 版本,那么 LTS 的版本是一种怎样的版本呢? 本文内容LTSLTSC / LTSBESR LTS 这是 .NET Core 2.1 的发布博客:Announcing .NET Core 2.1 - .NET Blog;文中说: ...

2020-01-28 17:52:50

阅读数 232

评论数 0

原创 在 Visual Studio 的解决方案资源管理器中隐藏一些文件

项目文件中有一些属性几乎是专门为 IDE 而准备的,不过考虑到 .NET 生态的开发者多数都使用 Visual Studio,所以基本上也只有 Visual Studio 对这些特性支持的最全面。(才不会透漏这些属性其实本就是为 Visual Studio 而准备的呢。) 本文将介绍如何在 Vis...

2020-01-28 17:47:02

阅读数 184

评论数 0

原创 解读 Microsoft.NET.Sdk 的源码,你能定制各种奇怪而富有创意的编译过程

在 csproj 中,Project 中的 Sdk 属性是 MSBuild 15.0 开始支持的,也就是 Visual Studio 2017 开始支持。有了 Sdk 属性的存在,MSBuild 编译过程能够扩展得非常强大,而不止是过去 Import 的一个 props 和 targets 文件。...

2020-01-28 17:45:00

阅读数 95

评论数 0

原创 阻止某个 NuGet 包意外升级

出于兼容性考虑,我们可能不再更新某个项目的 NuGet 包。典型的情况是软件版本进行了大规模的不兼容的升级,需要对旧格式的数据进行读取,以便迁移到新格式的数据。 然而,团队开发的软件可能因为某个小伙伴不知道这样的历史问题,从而手抖将某个不应该更新的 NuGet 包更新了,于是迁移就挂了。 本文提供...

2020-01-28 17:40:49

阅读数 89

评论数 0

提示
确定要删除当前文章?
取消 删除