• walterlv
  • 朋友
  • RSS
  • 主题
搜索
Microsoft MVP

吕毅

.NET and Windows Developer, Microsoft MVP

  • 博客
  • 胡思乱想
  • 朋友
  • 开源项目
  • 关于
  • RSS 订阅
    blog banner

    .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args

    2019-02-19 13:49

    我们通常得到的命令行参数是一个字符串数组 string[] args,以至于很多的命令行解析库也是使用数组作为解析的参数来源。

    然而如我我们得到了一整个命令行字符串呢?这个时候可能我们原有代码中用于解析命令行的库或者其他辅助函数不能用了。那么如何转换成数组呢?

    git 合并策略

    2019-02-15 06:31

    不清楚 git 冲突的表示方法,不了解 git 的合并原理,不知道 git 解冲突的多种策略。即便如此,大多数人依然可以正常使用 git 完成合并、拉取操作,并且解一些冲突。这得益于 git 默认情况下的合并方式可以处理大多数情况下的正常合并。

    然而,你是否遭遇 git 自动合并炸掉的情况?命名提示没有冲突,代码却早已无法编译通过。

    本文将介绍 git 的合并策略,你可能可以更好的使用不同的策略来解决冲突。

    git 的合并原理(递归三路合并算法)

    2019-02-14 13:03

    如果 git 只是一行行比较,然后把不同的行报成冲突,那么你在合并的时候可能会遇到大量的冲突;这显然不是一个好的版本管理工具。

    本文介绍 git 合并分支的原理。

    从 “x is null 和 x == null” 的区别看 C# 7 模式匹配中常量和 null 的匹配

    2019-02-11 08:48

    尝试过写 if (x is null)?它与 if (x == null) 相比,孰优孰劣呢?

    x is null 还有 x is constant 是 C# 7.0 中引入的模式匹配(Pattern Matching)中的一个小细节。阅读本文将了解 x is constant 和 x == constant 之间的差别,并给出一些代码编写建议。

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

    2019-01-30 14:33

    NuGet 原本就提供了生成源码包的功能。不过,NuGet 原生的源码包仅用于调试时自带调试信息和调试源码。

    本文将以最简单的方式制作一个源码引用包。安装 NuGet 包后,不会生成任何程序集引用,而是相当于将源码直接放入被安装的程序集中一样。

    ReSharper 在 C 盘占用了太多空间了,本文告诉你如何安全地删除或转移这些文件

    2019-01-30 12:34

    一个不小心,我的 SSD 又满了。到底是谁占用了那么多的空间!如果你是 ReSharper 的重度用户,那么可能你的调查结果会直指 JetBrains ReSharper。

    本文将告诉你如何安全地删除这些文件来释放你的 C 盘空间,然后在 ReSharper 中设置其他的缓存目录。

    WPF's multi-threaded UI is not thread safe

    2019-01-29 04:10

    WPF supports multiple UI threads in its framework. You can create multiple UI thread windows or create multiple UI threads in a single window. But unfortunately, this is not really thread-safe.

    There is a very low probability that WPF application will crash when you creating a multi-thread UI. In this post, I’ll tell how this happens.

    WPF 支持的多线程 UI 并不是线程安全的

    2019-01-29 04:02

    WPF 支持创建多个 UI 线程,跨窗口的或者窗口内的都是可以的;但是这个过程并不是线程安全的。

    你有极低的概率会遇到 WPF 多线程 UI 的线程安全问题,说直接点就是崩溃。本文将讲述其线程安全问题。

    使用 Xamarin 在 iOS 真机上部署应用进行调试

    2019-01-27 13:17

    虽然 Xamarin 可以在 Windows 操作系统上编写和调试,但如果开发 iOS 应用,那么我们依然需要一台安装有 XCode 和 Visual Studio for Mac 的 Mac 电脑。做真机部署不是像平时使用太阳系第一 IDE Visual Studio 那样方便。

    所以本文需要介绍如何使用 Xamarin 在 iOS 真机上部署应用进行调试,然后顺便说一些注意事项。

    .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例

    2019-01-25 07:47

    我们知道,在编译期间相同的字符串,在运行期间就会是相同的字符串实例。然而,如果编译期间存在字符串的运算,那么在运行期间是否是同一个实例呢?

    只要编译期间能够完全确定的字符串,就会是同一个实例。

    使用 Xamarin 开发 iOS 应用中需要注意的若干个问题

    2019-01-22 01:11

    本文收集整理使用 Xamarin 开发 iOS 应用时可能会遇到的各种问题。

    C# 永远不会返回的方法真的不会返回

    2019-01-20 07:36

    一般情况下,如果一个方法声明了返回值,但是实际上在编写代码的时候没有返回,那么这个时候会出现编译错误。

    然而,如果方法内部出现了永远也不会退出的死循环,那么这个时候就不会出现编译错误。

    CentOS 的终端中如何搜索文件

    2019-01-20 07:05

    CentOS 中搜索文件可以使用 find 命令。

    不使用 U 盘等任何工具全新安装 Windows 操作系统

    2019-01-17 12:13

    安装 Windows 有非常多种方法,现在我们要解决的问题是:

    1. 手头没有量产的 U 盘,或者懒得花时间去用 iso 文件量产 U 盘;
    2. 不想在 Windows 现有系统下安装(可能是为了全新安装,也可能是为了跳过安装序列号/产品密钥)

    于是本文教你如何一步一步在 Windows RE 环境下安装操作系统。

    C#/.NET 如何确认一个路径是否是合法的文件路径

    2019-01-16 12:18

    很多方法要求传入一个字符串作为文件名或者文件路径,不过方法在实际执行到使用文件名的时候才会真正使用到这个文件名;于是这这种时候才会因为各种各样的异常发现文件名或者文件路径是不合法的。

    有没有方法能够提前验证文件名或者文件路径是否是合法的路径呢?

    让 MSBuild Target 支持 Clean

    2019-01-16 07:20

    我们有时候会使用解决方案的清理(Clean)功能来解决一些项目编译过程中非常诡异的问题。这通常是一些 Target 生成了一些错误的中间文件,但又不知道到底是哪里错了。

    我们自己编写 Target 的时候,也可能会遇到这样的问题,所以让我们自己的 Target 也能支持 Clean 可以在遇到诡异问题的时候,用户可以自己通过清理解决方案来消除错误。

    出于迁移项目的考虑,GitHub 中 Fork 出来的项目,如何与原项目断开 Fork 关系?

    2019-01-15 11:50

    如果需要为 GitHub 上的项目做贡献,我们通常会 Fork 到自己的名称空间下。在推送代码之后添加 pull request 时,GitHub 会自动为我们跨仓库建立 pull request 的连接,非常方便。但是,如果 Fork 是出于项目的迁移,例如从个人名下迁移到某个组织下或者反过来,那么这种自动的 pull request 的设置就很影响效率了。

    那么这种情况如何处理呢?如何断开 Fork 连接呢?

    .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)

    2019-01-10 03:41

    如果你试图通过 GetHashCode 得到的一个哈希值来避免冲突,你可能要失望了。因为实际上 GetHashCode 得到的只是一个 Int32 的结果,而 Int32 只有 32 个 bit。

    32 个 bit 的哈希,有多大概率是相同的呢?本文将计算其概率值。

    int? 竟然真的可以是 null!.NET/C# 确定可空值类型 Nullable 实例的真实类型

    2019-01-08 10:01

    使用 Nullable<T> 我们可以为原本不可能为 null 的值类型像引用类型那样提供一个 null 值。不过注意:Nullable<T> 本身也是个 struct,是个值类型哦。这意味着你随时可以调用 .HasValue 这样的方法,而不用担心会出现 NullReferenceException。

    等等!除了本文提到的一些情况。

    签署 Centennial Program Addendum,使用 Desktop Bridge 将 Win32 应用转制成 UWP

    2019-01-08 10:01

    能上架 Windows 应用商店的并不一定必须是 UWP 应用程序或者 PWA 程序,也可以是普通的 Win32 应用程序。典型的上架应用商店的应用有微信、Telegram、Snipaste 等。使用 Desktop Bridge,我们即可以为我们的普通 Win32 应用程序做一个 UWP 的包来。

    C# 中委托实例的命名规则

    2019-01-08 09:09

    我们知道一个类中的属性应该用名词或名词性短语,方法用动词或动宾短语;但是委托的实例却似乎有一些游离。因为在 .NET 中委托代表的是一个动作,既可以把它看作是名词,也可以看作是动词。在用法上,既可以像属性和变量一样被各种传递,也可以像一个方法一样被调用。

    那么委托实例的命名,应该遵循属性和变量的命名,还是遵循方法的命名呢?

    三值 bool? 进行与或运算后的结果

    2019-01-06 12:52

    bool? 实际上是 Nullable<Boolean> 类型,可以当作三值的 bool 类型来使用。不过三值的布尔进行与或运算时的结果与二值有什么不同吗?

    为什么我们不应该使用微信或者 QQ 作为团队协作的 IM 工具?

    2019-01-06 10:52

    如果你的团队没有觉得微信是低效的团队 IM 工具,那只有两种可能:

    1. 团队成员很少使用微信进行私人的生活和娱乐。
    2. 你就是一个低效的团队,而且还不自知。

    Slack 开发入门之 Incoming Webhooks:往 Slack 的 Channel 中发消息

    2019-01-06 07:29

    一个工程师团队使用 Slack 进行团队协作比 QQ / 微信流的效率高多啦。除了基本的 IM 之外,它的扩展性也是非常重要的一点。

    本文介绍 Slack 的开发入门:Incoming Webhooks 篇。

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

    2019-01-03 01:03

    众所周知的,WPF 中多数对象都继承自 DispatcherObject,而 DispatcherObject 带给这些对象一个特点:不能跨线程访问。

    不过,WPF 中依然存在一些例外。本文将介绍 WPF 那些可跨线程访问的 DispatcherObject,如何充分利用这个特点提高应用程序的性能,以及如何自己编写这样的 DispatcherObject。

    .NET 使用 XPath 来读写 XML 文件(顺带解决 XML 命名空间的问题)

    2019-01-01 03:34

    XPath 是 XML 路径语言(XML Path Language),用来确定XML文档中某部分位置的语言。无论是什么语言什么框架,几乎都可以使用 XPath 来高效查询 XML 文件。

    本文将介绍 .NET 中的 XPath 相关类型的使用。

    基于 task 为 VSCode 添加自定义的外部命令

    2018-12-30 09:00

    我们有很多全局的工具能在各处使用命令行调用,针对某个仓库特定的命令可以放到仓库中。不过,如果能够直接为顺手的文本编辑器添加自定义的外部命令,那么执行命令只需要简单的快捷键即可,不需要再手工敲了。

    .NET 中使用 Mutex 进行跨越进程边界的同步

    2018-12-30 08:41

    Mutex 是 Mutual Exclusion 的缩写,是互斥锁,用于防止两个线程同时对计算机上的同一个资源进行访问。不过相比于其他互斥的方式,Mutex 能够跨越线程边界。

    谨慎使用 FileInfo.Exists 实例方法,而是使用 File.Exists 静态方法替代

    2018-12-30 08:41

    如果你在代码中使用了 FileInfo.Exists 实例方法来判断一个文件是否存在,也许会发现此方法可能错误地判断来一个文件是否真的存在。这是一个坑。

    本文将介绍坑的原因,并提供填坑的办法。

    C#/.NET 使用 CommandLineParser 来标准化地解析命令行

    2018-12-30 08:10

    CommandLineParser 是一款用于解析命令行参数的 NuGet 包。你只需要关注你的业务,而命令行解析只需要极少量的配置代码。

    本文将介绍如何使用 CommandLineParser 高效写出自己程序的命令行解析部分。

    • ←
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • →

    © 2014-2019 walterlv, all rights reserved. Powered by: Jekyll Theme by: walterlv Based on Thiago Rossener