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

吕毅

.NET and Windows Developer, Microsoft MVP

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

    使用 Visual Studio 自定义外部命令 (External Tools) 快速打开 git bash 等各种工具

    2019-03-04 03:06

    Visual Studio 支持自定义的外部命令,于是即便 Visual Studio 原生没有的功能,插件没有提供的功能,你也能仅仅通过配置就实现。比如,我们可以一键打开 Git Bash 输入 git 命令,比如可以一键打开项目或者文件所在的文件夹。

    本文将教你如何自定义 Visual Studio 的外部命令,并提供一些我自己正在使用的外部命令配置。

    让你的 Windows 应用程序在任意路径也能够直接通过文件名执行

    2019-03-02 11:07

    我们可以在任何路径下输入 explorer 来启动资源管理器,可以在任何路径中输入 git 来使用 git 相关的命令。我们知道可以通过将一个应用程序加入到环境变量中来获得这个效果,但是还有其他的方式吗?

    我们将这个过程称之为向 Windows 注册一个应用程序路径。本文介绍向 Windows 注册一个应用程序路径的各种方法。

    编写 MSBuild 内联编译任务(Task)用于获取当前编译环境下的所有编译目标(Target)

    2019-03-01 07:35

    我之前写过一些改变 MSBuild 编译过程的一些博客,包括利用 Microsoft.NET.Sdk 中各种自带的 Task 来执行各种各样的编译任务。更复杂的任务难以直接利用自带的 Task 实现,需要自己写 Task。

    本文将编写一个内联的编译任务,获取当前编译环境下的所有编译目标(Target)。获取所有的这些 Target 对我们调试一些与 MSBuild 或编译相关的问题时可能带来一些帮助。

    如何在 csproj 中用 C# 代码写一个内联的编译任务 Task

    2019-03-01 07:12

    我之前写过一些改变 MSBuild 编译过程的一些博客,包括利用 Microsoft.NET.Sdk 中各种自带的 Task 来执行各种各样的编译任务。更复杂的任务难以直接利用自带的 Task 实现,需要自己写 Task。

    本文介绍非常简单的 Task 的编写方式 —— 在 csproj 文件中写内联的 Task。

    在 MSBuild 编译项目时阻止输出所有的警告信息

    2019-02-27 09:35

    大型旧项目可能存在大量的 Warning,在编译之后 Visual Studio 会给出大量的警告。Visual Studio 中可以直接点掉警告,然而如果是通过命令行 msbuild 编译的,那如何不要让警告输出呢?

    帮助官方 NuGet 解掉 Bug,制作绝对不会传递依赖的 NuGet 包

    2019-02-27 08:34

    如果你希望做一个 NuGet 工具包,那么这个包一定不能作为依赖传递给下一个包。典型的例子,做一个生成版本号的工具 NuGet 包,或者做一个代码分析器。

    本文将解决 NuGet 的几个坑,真正做到绝对没有的依赖传递。

    电脑总是意外从睡眠状态唤醒,可以找出原因然后解决

    2019-02-27 06:09

    在昏暗的夜晚,一个人躺在房间的床上,静静的思考着什么。突然间电脑屏幕亮了!什么鬼!到底是谁唤醒了我的电脑!!!

    本文将介绍如何寻找唤醒电脑的真凶。

    将友盟(cnzz)站点的访问数据报告分享给其他人

    2019-02-27 05:48

    友盟(cnzz)可以帮助我们分析站点的访问数据。不过如果有更多的决策者,则需要更多人可以访问到友盟的数据。

    本文介绍两种将自己站点的访问数据报告分享给其他人的方法。

    全局或为单独的项目添加自定义的 NuGet 源

    2019-02-27 04:26

    本文介绍如何添加自定义的 NuGet 源。包括全局所有项目生效的 NuGet 源和仅在某些特定项目中生效的 NuGet 源。

    使用 Visual Studio 调试多进程的程序

    2019-02-21 07:24

    当你的编写的是一个多进程的程序的时候,调试起来可能会比较困难,因为 Visual Studio 默认只会把你当前设置的启动项目的启动调试。

    本文将介绍几种用 Visual Studio 调试多进程程序的方法,然后给出每种方法的适用条件和优劣。

    将 svn 仓库迁移到 git 仓库

    2019-02-20 02:22

    我找到了一个很久很久以前编写的项目,然而当时是使用 svn 进行版本管理的。然而现在的版本管理全部是 git,不愿意再装一个 svn 工具来管理这些古老的项目,于是打算将其迁移到 git 中。

    本文介绍如何将古老的 svn 项目迁移到 git。

    .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 合并分支的原理。

    将 .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 的线程安全问题,说直接点就是崩溃。本文将讲述其线程安全问题。

    .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 中委托代表的是一个动作,既可以把它看作是名词,也可以看作是动词。在用法上,既可以像属性和变量一样被各种传递,也可以像一个方法一样被调用。

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

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

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