walterlv的专栏

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

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

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

2019-08-30 15:03:48

阅读数 47

评论数 0

WPF 程序的编译过程

基于 Sdk 的项目进行编译的时候,会使用 Sdk 中附带的 props 文件和 targets 文件对项目进行编译。Microsoft.NET.Sdk.WindowsDesktop 的 Sdk 包含 WPF 项目的编译过程。 而本文介绍 WPF 项目的编译过程,包含 WPF 额外为编译过程添加的...

2019-08-30 14:31:31

阅读数 28

评论数 0

一文看懂 .NET 的异常处理机制、原则以及最佳实践

什么时候该抛出异常,抛出什么异常?什么时候该捕获异常,捕获之后怎么处理异常?你可能已经使用异常一段时间了,但对 .NET/C# 的异常机制依然有一些疑惑。那么,可以阅读本文。 本文适用于已经入门 .NET/C# 开发,已经开始在实践中抛出和捕获异常,但是对 .NET 异常机制的用法以及原则比较模糊...

2019-07-04 13:30:00

阅读数 120

评论数 0

如何给 Windows Terminal 增加一个新的终端(以 Bash 为例)

Windows Terminal 的预览版本可以在微软应用商店下载,下载完后它原生就可以打开三个不同的终端 PowerShell Core、CMD 和 PowerShell。然而我的计算机上还安装了一个 Bash 可以如何添加到 Windows Terminal 里呢? 本文将介绍添加一个新终端应...

2019-08-30 15:12:26

阅读数 37

评论数 0

.NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?

在扩展 MSBuild 编译的时候,我们一般的处理的路径都是临时路径或者输出路径,那么发布路径在哪里呢? 我曾经在下面这一篇博客中说到可以通过阅读 Microsoft.NET.Sdk 的源码来探索我们想得知的扩展编译的答案: 解读 Microsoft.NET.Sdk 的源码,你能定制各种奇怪而...

2019-08-30 15:10:11

阅读数 55

评论数 0

.NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃

在 .NET Framework 4.8 中,try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃。而 .NET Core 3.0 中不会出现这样的问题。 本文可能是正在像微软报告的一个 Bug。 本文由多种语言编写而成,请选择你喜欢的语言: .NET Framewor...

2019-08-30 15:08:31

阅读数 33

评论数 0

在项目文件 / MSBuild / NuGet 包中编写扩展编译的时候,正确使用 props 文件和 targets 文件

.NET 扩展编译用的文件有 .props 文件和 .targets 文件。不给我选择还好,给了我选择之后我应该使用哪个文件来编写扩展编译的代码呢? 如果你不了解 .props 文件或者 .targets 文件,可以阅读下面的博客: 理解 C# 项目 csproj 文件格式的本质和编译流程 -...

2019-08-30 15:05:56

阅读数 27

评论数 0

.NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?

在为 .NET 项目扩展 MSBuild 编译而编写编译目标(Target)时,我们会遇到用于扩展编译目标用的属性 BeforeTargets AfterTargets 和 DependsOnTargets。 这三个应该分别在什么情况下用呢?本文将介绍其用法。 BeforeTargets / A...

2019-08-30 15:04:54

阅读数 13

评论数 0

使用 Visual Studio 编译时,让错误一开始发生时就停止编译(以便及早排查编译错误节省时间)

对于稍微大一点的 .NET 解决方案来说,编译时间通常都会长一些。如果项目结构和差量编译优化的好,可能编译完也就 5~30 秒,但如果没有优化好,那么出现 1~3 分钟都是可能的。 如果能够在编译出错的第一时间停止编译,那么我们能够更快地去找编译错误的原因,也能从更少的编译错误列表中找到出错的关键...

2019-08-30 15:02:06

阅读数 33

评论数 0

如何追踪 WPF 程序中当前获得键盘焦点的元素并显示出来

title: “如何追踪 WPF 程序中当前获得键盘焦点的元素并显示出来” publishDate: 2019-06-28 09:49:29 +0800 date: 2019-06-29 09:07:54 +0800 categories: wpf dotnet csharp position: ...

2019-08-30 15:00:11

阅读数 51

评论数 0

如何监视 WPF 中的所有窗口,在所有窗口中订阅事件或者附加 UI

由于 WPF 路由事件(主要是隧道和冒泡)的存在,我们很容易能够通过只监听窗口中的某些事件使得整个窗口中所有控件发生的事件都被监听到。然而,如果我们希望监听的是整个应用程序中所有的事件呢?路由事件的路由可并不会跨越窗口边界呀? 本文将介绍我编写的应用程序窗口监视器,来监听整个应用程序中所有窗口中的...

2019-08-30 14:56:41

阅读数 11

评论数 0

.NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?

都知道可以在任务管理器中查看进程的 CPU 和内存占用,那么如何通过 .NET 编写代码的方式来获取到 CPU 和内存占用呢? .NET 中提供了 PerformanceCounter 类型,可以用来监视系统中大量的性能问题。 本文内容获取全局 CPU 和内存占用获取当前进程的 CPU 和内存占...

2019-08-30 14:55:47

阅读数 16

评论数 0

如果不用 ReSharper,那么 Visual Studio 2019 能还原 ReSharper 多少功能呢?

本文只谈论 ReSharper 的那些常用功能中,Visual Studio 2019 能还原多少,主要提供给那些正在考虑不使用 ReSharper 插件的 Visual Studio 用户作为参考。毕竟 ReSharper 如此强大的功能是建立在每年缴纳不少的费用以及噩梦般占用 Visual S...

2019-08-30 14:54:42

阅读数 91

评论数 0

从 git 的历史记录中彻底删除文件或文件夹

如果你对外开源的代码中出现了敏感信息(例如你将私钥上传到了仓库中),你可能需要考虑将这个文件从 git 的历史记录中完全删除掉。 本文介绍如何从 git 的历史记录中彻底删除文件或文件夹。 第一步:修改本地历史记录 彻底删除文件: git filter-branch --force --inde...

2019-08-30 14:52:19

阅读数 34

评论数 0

如何快速创建 Visual Studio 代码片段?

使用 Visual Studio 的代码片段功能,我们可以快速根据已有模板创建出大量常用的代码出来。ReSharper 已经自带了一份非常好用的代码片段工具,不过使用 ReSharper 创建出来的代码片段只能用在 ReSharper 插件中。如果团队当中有一些小伙伴没有 ReSharper(毕竟...

2019-08-30 14:50:22

阅读数 35

评论数 0

从零开始制作 NuGet 源代码包(全面支持 .NET Core / .NET Framework / WPF 项目)

系。跟着本教程你也可以制作出来一个源代码包,只不过可能遇到了问题的时候不容易调试和解决。 制作一个源代码包 接下来,我们将从零开始制作一个源代码包。 我们接下来的将创建一个完整的解决方案,这个解决方案包括: 一个将打包成源代码包的项目 一个调试专用的项目(可选) 一个测试源代码包的项目(可选) ...

2019-08-30 14:47:24

阅读数 47

评论数 0

Windows 10 解决无法完整下载安装语言包(日语输入法无法下载使用)

最近我想在我的 Windows 10 上安装一个新的语言包,在 “设置” -> “时间和语言” -> “语言” 中,添加了新的语言之后,语言进入了下载状态。但是没过一小会儿,下载进度条就结束了,提示语言已经下载安装完成。但实际上只能作为显示使用,(日语)输入法却不能使用...

2019-08-30 14:41:37

阅读数 343

评论数 0

.NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖

我们有多种工具可以将程序集合并成为一个。比如 ILMerge、Mono.Merge。前者不可定制、运行缓慢、消耗资源(不过好消息是现在开源了);后者已被弃用、不受支持且基于旧版本的 Mono.Cecil。 而本文介绍用来替代它们的 ILRepack,使用 ILRepack 来合并程序集。 本文内...

2019-08-30 14:40:24

阅读数 27

评论数 0

.NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖

我们有多种工具可以将程序集合并成为一个。打包成一个程序集可以避免分发程序的时候带上一堆依赖而出问题。 ILMerge 可以用来将多个程序集合并成一个程序集。本文介绍使用 ILMerge 工具和其 NuGet 工具包来合并程序集和其依赖。 本文内容以 NuGet 包的形式使用 ILMerge以命令...

2019-08-30 14:38:53

阅读数 26

评论数 0

.NET 的程序集加载上下文

我们编写的 .NET 应用程序会使用到各种各样的依赖库。我们都知道 CLR 会在一些路径下帮助我们程序找到依赖,但如果我们需要手动控制程序集加载路径的话,需要了解程序集加载上下文。 如果你不了解程序集加载上下文,你可能会发现你加载了程序集却不能使用其中的类型;或者把同一个程序集加载了两次,导致使用...

2019-08-30 14:37:23

阅读数 26

评论数 0

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