10 walter lv

尚未进行身份认证

https://blog.walterlv.com/

等级
TA的排名 4k+

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

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

2020-01-28 17:56:00

.NET Standard 的管理策略

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

2020-01-28 17:53:34

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

在 .NET Core 2.1 发布之时,微软称之为一个 LTS 版本,那么 LTS 的版本是一种怎样的版本呢?本文内容LTSLTSC / LTSBESRLTS这是 .NET Core 2.1 的发布博客:Announcing .NET Core 2.1 - .NET Blog;文中说:.NET Core 2.1 will be a long-term support (LTS) re...

2020-01-28 17:52:50

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

项目文件中有一些属性几乎是专门为 IDE 而准备的,不过考虑到 .NET 生态的开发者多数都使用 Visual Studio,所以基本上也只有 Visual Studio 对这些特性支持的最全面。(才不会透漏这些属性其实本就是为 Visual Studio 而准备的呢。)本文将介绍如何在 Visual Studio 的解决方案资源管理器中隐藏一些文件。本文内容原生支持原生不支持变通解决活学活...

2020-01-28 17:47:02

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

在 csproj 中,Project 中的 Sdk 属性是 MSBuild 15.0 开始支持的,也就是 Visual Studio 2017 开始支持。有了 Sdk 属性的存在,MSBuild 编译过程能够扩展得非常强大,而不止是过去 Import 的一个 props 和 targets 文件。本文将介绍 Microsoft.NET.Sdk 的源码,以及利用源码中的一些线索来完成官方文档中没有...

2020-01-28 17:45:00

阻止某个 NuGet 包意外升级

出于兼容性考虑,我们可能不再更新某个项目的 NuGet 包。典型的情况是软件版本进行了大规模的不兼容的升级,需要对旧格式的数据进行读取,以便迁移到新格式的数据。然而,团队开发的软件可能因为某个小伙伴不知道这样的历史问题,从而手抖将某个不应该更新的 NuGet 包更新了,于是迁移就挂了。本文提供了一种方法来避免某些特定 NuGet 包的升级。如果你只关心结果,请直接前往最后一节:终极解决方案...

2020-01-28 17:40:49

git subtree 不断增加的推送时间,解不玩的冲突!这篇文章应该能救你

原生 git 对于公共组件那种类型的子仓库的支持并不怎么好,就是那种某个子文件夹是一个另外的 git 仓库,并被多个 git 父仓库使用的形式。实际使用的感受甚至是“糟糕透了”。这种并不友好的子仓库支持可能与 git 的设计理念有关,不过,git 的开发者始终在打补丁以稍微优化这样的体验。本文内容不断增加的推送时间永远也解不完的冲突原因解决不断增加的推送时间如果你曾经在大仓库试过 git...

2020-01-28 17:39:22

使用 LINQ to XML,.NET 让生成 XML 文件变得和直接写 XML 一样轻松

由 .NET Framework 3.5 引入,并依然在 .NET Core 中发扬光大的 LINQ to XML 让编写 XML 文件变得非常轻松。使用 XElement、XAttribute 我们能够完整构造一个 XML 出来。为了能直观地体会到优势,我写一个最简单的例子:var root = new XElement("Root", new XAttribute("Attrib...

2020-01-28 17:37:49

将 .NET Core 项目打一个最简单的 NuGet 源码包,安装此包就像直接把源码放进项目一样

NuGet 原本就提供了生成源码包的功能。不过,NuGet 原生的源码包仅用于调试时自带调试信息和调试源码。本文将以最简单的方式制作一个源码引用包。安装 NuGet 包后,不会生成任何程序集引用,而是相当于将源码直接放入被安装的程序集中一样。本文内容准备工作将源码加入 NuGet 包安装 NuGet 包时引入源码准备工作我们需要一个可以用来打 NuGet 包的 .NET Core 项目,...

2020-01-28 17:36:05

如何在 MSBuild Target(Exec)中报告编译错误和编译警告

我曾经写过一篇文章 如何创建一个基于命令行工具的跨平台的 NuGet 工具包,通过编写一个控制台程序来参与编译过程。但是,相比于 基于 Task 的方式,可控制的因素还是太少了。有没有什么办法能够让控制台程序也能与 MSBuild Target 之间发生更多的信息交换呢?比如报告编译错误和编译警告?答案是有的,通过格式化控制台输出。本文内容编译错误和编译警告更复杂的错误和警告控制阻止编译错误...

2020-01-28 17:33:48

PasswordVault —— 在 UWP 应用中安全地保存密码

只要你做过自动登录,一定会遇到密码的安全问题。现在大部分的网络服务都已经支持 Token 了,有些已经支持 OAuth2.0,这意味着客户端不怎么需要关心密码的安全保存问题。但是,依然还有一些古老的服务和协议需要直接传输密码,比如邮件的 IMAP 协议。我在 ERMail 应用的开发中就遇到了这样的问题,作为一款邮件客户端,IMAP 协议下的自动登录依然要在用户的本地保存密码。无论你采用哪...

2020-01-28 17:32:37

如何编写 WPF 的标记扩展 MarkupExtension,即便在 ControlTemplate/DataTemplate 中也能生效

WPF 的标记扩展为 WPF 带来了强大的扩展性。利用自定义的标记扩展,我们能够为 XAML 中的属性提供各种各样种类的值,而不仅限于自带的那一些。不过有小伙伴发现在 ControlTemplate 或 DataTemplate 中编写标记扩展有时并不能正常工作,而本文将提供解决方法。本文并不会详细讲解如何编写 WPF 的标记扩展,如果你想了解相关的知识,建议阅读官网:Markup Exte...

2020-01-28 17:25:35

如何让 .NET Core 命令行程序接受密码的输入而不显示密码明文

如果是在 GUI 中要求用户输入密码,各 UI 框架基本都提供了用于输入密码的控件;在这些控件中,用户在输入密码的时候会显示掩码。然而对于控制台程序来说,并没有用于输入密码的原生方法。本文将讲述一种在控制台中输入密码,并仅显示掩码的方法。开始简单的程序让我们开始一个简单的 .NET Core 控制台程序。static void Main(string[] args){ Cons...

2020-01-28 17:24:32

为博客或个人站点的 Markdown 添加 LaTeX 公式支持

LaTeX 是一套排版系统,原生包含对科学和技术型文档内容的支持,而 LaTeX 公式(LaTeX math and equations)则是这种支持中非常重要的一部分。如果能够在博客或个人站点中使用到 LaTeX 的排版系统,或者说只是其中的数学公式部分,对学术性(或者只是使用到了部分数学原理)文章来说将会非常方便。本文将推荐一些脚本,以便添加 LaTeX 数学公式的支持。为站点添加 La...

2020-01-28 17:23:04

Sdk 风格的 csproj 对 WPF/UWP 支持不太好?有第三方 SDK 可以用!MSBuild.Sdk.Extras

自从微软推出 .NET Core 以来,新的项目文件格式以其优秀的可扩展性正吸引着更多项目采用。然而——微软官方的 WPF/UWP 项目模板依然还在采用旧的 csproj 格式!这只是因为——在 .NET Core 3.0 以前,基于 Microsoft.NET.Sdk 的官方 SDK 依然对 WPF/UWP 支持不够友好。本文内容为什么要使用第三方的 SDK?如何使用 MSBuild.Sd...

2020-01-28 17:21:13

让你编写的控件库在 XAML 中有一个统一的漂亮的命名空间(xmlns)和命名空间前缀

在 WPF XAML 中使用自己定义的控件时,想必大家都能在 XAML 中编写出这个控件的命名空间了。然而——我写不出来,除非借助 ReSharper。如果控件能够有一个漂亮的命名空间和命名空间前缀呢?——好吧,还是写不出来,不过,至少漂亮些。本文将指导你自定义在 XAML 中使用的命名空间。本文内容达到什么样的效果?这是怎么做到的呢?还有什么更高级的玩法吗?一些限制参考资料达到什么样的效...

2020-01-28 17:19:20

如何编写基于 Microsoft.NET.Sdk 的跨平台的 MSBuild Target(附各种自带的 Task)

我之前写过一篇 理解 C# 项目 csproj 文件格式的本质和编译流程,其中,Target 节点就是负责编译流程的最关键的节点。但因为篇幅限制,那篇文章不便详说。于是,我在本文说说 Target 节点。本文内容Target 的节点结构Target 执行的时机和先后顺序Microsoft.NET.Sdk 为我们提供的现成可用的 Task使用自己写的 Task差量编译Target 的节点结构...

2020-01-28 17:18:33

为自己搭建的博客添加可切换的暗色和亮色主题

不知从什么时候开始,越来越多的小伙伴喜欢在暗色的编辑器中编写代码;于是写博客的小伙伴们也得在博客中顺应这样的潮流,这样才能更接近平时写代码时的环境。然而——绝大多数的技术类博客或技术文章都是亮色主题的,代码在其中以和谐但不太好看的亮色存在,或者扎眼但熟悉的暗色存在。这始终觉得不那么舒适。于是,作为博主,我决定考虑添加亮色和暗色两种主题色的支持。如果你也喜欢这样的方式,可以读一读本文,快速 ge...

2020-01-28 17:16:22

在移动端打开 Google 的网页快照

Google 的网页快照功能在原网页意外挂掉的时候能够临时为我们提供网页内的信息。例如我们要搜索的某项技术资料来源于某个个人站点,而现在他的域名到期了没有续费;例如我现在的博客在部署期间挂掉了,不能继续访问。这时 Google 网页快照都能够帮我们临时访问网页缓存。PC 端的网页快照很容易找到并且点开:然而移动端就不那么幸运了,找不到那个打开快照的小按钮:这个时候,可以复制以下网址到地...

2020-01-28 17:15:14

在 HTML 超链接上添加可交互的 ToolTip

当鼠标滑过超链接的那一刻,我们都能想象出一个熟悉的白色提示框从鼠标指针所在的位置淡入。那是 ToolTip 提示框。HTML 中我们能通过简单的属性设置获得 ToolTip,但如果希望 ToolTip 是能交互的,那么就阅读本文吧!本文内容原生 ToolTip可交互 ToolTip原生 ToolTip先来看看 HTML 原生自带的 ToolTip:请将鼠标划至这里代码非常简单:&lt...

2020-01-28 17:12:29

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 微软mvp
    微软mvp
    授予通过CSDN博客平台积极分享微软相关技术知识和专业技能,并做出突出贡献的用户。
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周上午根据用户上周周三的博文发布情况由系统自动颁发。