lindexi

林德熙 - 微软最具价值专家和 .NET 基金会成员

林德熙

VisualStudio 开发文件自定义工具单文件生成工具

在 VisualStudio 右击任意的文件夹,点击属性,可以看到属性里面有一个选项是自定义工具。如果创建的是 WPF 项目,可以看到页面或用户控件的自定义工具是 XamlIntelliSenseFileGenerator 可以用来在设计时转换文件,将转换的输出放在另一个文件中。通过这个方法可以自己定义一些内容,在修改内容文件的时候自动生成代码

VisualStudio 2019 新特性

很多小伙伴都好奇 VisualStudio 2019 有哪些功能,下面让我介绍一些好玩的特性

VisualStudio 2019 尝试使用 C# 8.0 新的方式

在安装了几天之后,终于有了 VisualStudio 2019 于是再安装了 dotnet core 3.0 预览版,现在可以来尝试使用 C# 8.0 的新方式

Roslyn 使用 Directory.Build.props 管理多个项目配置

在一些大项目需要很多独立的仓库来做,每个仓库之间都会有很多相同的配置,本文告诉大家如何通过 Directory.Build.props 管理多个项目配置

Roslyn 通过 NuGet 库修改应用程序入口函数

我和小伙伴说只要你安装我的 NuGet 库无论你怎么做,都会调用我的 Main 函数,默认的主函数不会调用

Roslyn 让 VisualStudio 急速调试底层库方法

我有一个很大的项目,这个项目里面包含了很多小的底层库。有一天我发现了某个底层库可能有小伙伴挖了一个坑,我期望调试这个底层库,但是我一点都不想编译整个大项目,因为底层库被太多的项目应用,一点点修改都需要编译很久。本文提供一个简单的方法让大家可以通过修改项目文件,让 VisualStudio 可以急速调试底层库,每次更改底层库只需要重新编译底层库就可以

Roslyn 让编译时候 Message 内容默认输出

默认无论是在 VisualStudio 还是在 dotnet 命令行都会忽略项目文件或安装库里面的消息输出,而吕水小伙伴给了一个馊主意将所有需要输出给用户的消息换为警告,因为默认是会输出警告,于是消息就可以输出了。然后某个小伙伴就过来打我,因为他一编译整个项目原本是没有警告的,现在有很多警告。于是我就在找是否有方法可以做到让消息的内容默认输出

Roslyn 通过 Target 修改编译的文件

本文告诉大家如何使用 Target 进行修改编译时的文件

Roslyn 静态分析

本文告诉大家如何使用 Roslyn 分析代码。

resharper 跳转到源代码

resharper 可以使用 ctrl+b 跳转到源代码,但是如果使用库的源代码,那么如何跳转,会显示对象管理器,那么如何让resarper 跳转到源代码

Moq基础 判断方法被执行

如果想知道注入的类的某个方法被使用了几次,就可以通过 mock 提供的方法进行判断方法有没被执行或被使用多少次

MobaXterm 使用代理

经常需要连接服务器,但是有时候服务器需要代理才可以连接,所以本文告诉大家如何使用MobaXterm 代理,进行ssh代理连接

用状态机的思想解析字符串

在编程思想比较高级的有递归和状态机等使用比较少的代码就可以做出复杂的逻辑,状态机的思想是在一个状态到另一个状态,每个状态知道自己能处理的内容,同时知道可以调用哪些状态 如需要解析 [x=1,y=2,w=3,h=5] 的字符串作为一个矩形,使用状态机的方法解析,在知道使用状态机的开发者看到代码就会觉得很容易理解,对于不了解状态机的开发者就会觉得逻辑很绕

C# 程序集数量对软件启动性能的影响

本文通过很多的数据测试分析在一个项目引用很多个外部项目和将外部项目的类合并到一个项目之间的启动性能的不同。 通过分析知道了如果一个项目引用了很多项目,而且在启动过程会全部调用这些项目,这时的软件性能会比将这些项目的代码合并到一个项目的慢很多 本文的数据为 预编译框架,开发高性能应用 - 课程 - 微软技术暨生态大会 2018 - walterlv 提供

C# 直接创建多个类和使用反射创建类的性能

本文告诉大家我对比的使用直接创建多个类和使用反射创建多个类的性能

C# 性能分析 反射 VS 配置文件 VS 预编译

本文分析在 C# 中使用反射和配置文件和预编译做注入的性能,本文的数据是为预编译框架,开发高性能应用 - 课程 - 微软技术暨生态大会 2018 - walterlv提供

dotnet core 使用 GBK 编码

本文告诉大家如何在 .NET Core 中使用 GBK 编码

C#判断文件是否被混淆

可以使用混淆工具对一个DLL 和 exe 进行混淆。 但是如何知道一个文件是否已经混淆了。 在发布之前,需要知道是不是有文件忘了混淆。

C# 解析 sln 文件

我的项目,编码工具 需要检测打开一个工程,获取所有项目。 但是发现原来的方法,如果存在文件夹,把项目放在文件夹中,那么是无法获得项目,于是我就找了一个方法去获得sln文件的所有项目。

静默命令行安装 Visual C++ 发行包

本文告诉大家如何通过命令行的方法,在安装程序静默调用 VC++ 库的安装,解决缺少环境问题

dotnet 获取程序所在路径的方法

在 dotnet 有很多方法可以获取当前程序所在的路径,但是这些方法获取到的路径有一点不相同,特别是在工作路径不是当前的程序所在的路径的时候

dotnet 通过 WMI 获取指定进程的输入命令行

本文告诉大家如何使用 WMI 通过 Process 获取这个进程传入的命令行

Roslyn 如何基于 Microsoft.NET.Sdk 制作源代码包

本文告诉大家如何做源代码包,源代码包的意思是安装的包不是安装dll的方式,而是使用源代码的方式。也就是最后是编译包的源代码而不是添加dll,这个方式是解决想要把项目分小,功能分细,但是不希望项目有很多的 dll,因为如果项目有很多 dll 会让软件打开的时间比较长

Roslyn 将这个文件放在你的项目文件夹,无论哪个控制台项目都会输出林德熙是逗比

虽然已经通过很多篇博客告诉大家如何通过 Directory.Build.props 文件修改编译的方法,但是本文还是提供一个新的思路 只需要在项目文件夹,或者磁盘的文件夹,如 E:\ 放下本文提供的 Directory.Build.props 文件,整个文件夹内的控制台项目就会输出 林德熙是逗比 想要知道是怎么做的,请看下面

Roslyn 获得 sln 文件所在的文件夹

我找了很久没有发现 SolutionDir 这个定义,所以只能通过一个不通用的方法找到

Roslyn 通过 Nuget 引用源代码 在 VS 智能提示正常但是无法编译

本文告诉大家如果在 Nuget 引用源代码的方式引用源代码,在 VisualStudio 的智能提示和 Resharper 的智能提示都能找到对应的类,但是在 VisualStudio 编译或使用命令行 msbuild 编译时提示找不到类

VisualStudio 使用新项目格式快速打出 Nuget 包

本文告诉大家如何通过 VisualStudio 的新项目格式快速打出 Nuget 包

VisualStudio 通过外部调试方法快速调试库代码

在开发的时候,我有一个很大的项目,里面包含了 1000 个项目,但是我需要调试里面的一个库,如果直接修改这个库,会让 VisualStudio 重新编译 90 个项目,于是这样的调试的速度就太慢 本文告诉大家如何通过外部调试的方法,每次调试只需要编译这个库不需要编译其他的项目

WPF Main thread gets a deadlock when stylus input thread is waiting for the window to close

We found two way that can make the main thread locked. And we can not write any code to solve it and it can only be circumvented. The easiest way to reproduce this issue is to wait for the window in the main thread to close in the stylus input thread.

WPF 开发自动开机启动程序

本文告诉大家如何在 WPF 开发一个可以自动启动的程序

如何在 CMD 启动的软件传入带空格的路径

在使用 CMD 命令的时候,会将传入的命令按照空格分为多个不同的命令,但是路径经常是带有空格的。特别是想将参数传入到通过命令行启动的软件里面,可以如何做?

如何通过命令行 msbuild 编译项目

本文告诉大家如何通过 msbuild 编译一个项目,通过命令行编译可以输出更多的编译信息,可以用来调试自己写的编译相关方法,可以看到是哪个文件编译失败

C# 反射调用私有事件

在 C# 反射调用私有事件经常会不知道如何写,本文告诉大家如何调用

C# 从零开始写 SharpDx 应用 画三角

在当前的画面都是使用三角形,在开始就告诉大家如何画三角,本文告诉大家如何用像素著色器画