Web Analytics
yangyang

码农兼一个普普通通小青年

All Posts in 2023.9


使用Mono.Cecil将函数注入到模块的初始化构造器中

本文介绍了模块默认的模块初始化构造(Module Initializer)及其作用,进一步介绍了如何使用Mono.Cecil这一强大的IL语言修改器来修改已经编译好的程序集,来将注册AppDomain的AssemblyResolve事件逻辑,注入到模块的初始化构造器中,以实现将第三方依赖dll嵌入到资源文件中,程序集在动态加载时能够自动加载依赖的dll的功能。 …

Mono.Cecil Injection MSIL AppDomain Assembly Resolve Module Initializer Fody

将.NET应用程序发布为单一的可执行文件

本文简单介绍了在.NET中将程序打包为单文件的原理,并在.NET Framework和.NET Core中分别做了演示。在.NET Core中单文件部署比较简单,Visual Studio中自带的发布选项就能实现单文件部署。而.NET Framework中则需要手动添加依赖的dll到资源文件并将其“生成操作”设置为“嵌入的资源”,并且还需要注册AppDomain的AssemblyResolve事件,编写代码手动到资源文件里面加载对应的dll,比较繁琐。但借助第三方的工具比如Costura这个类库,就能十分方便的不用做任何修改的情况下,就能将程序发布为单文件应用。 …

Costura Single exe

使用命名管道进行进程间通讯

在某些情况下,我们需要在本机上的多个进程间进行通讯(inter process communication,IPC)。进程间进行通讯的方式有很多种,比如共享内存、TCP/IP、命名管道(Named Pipes)、Windows消息等等。本文主要介绍命名管道这种进程间通讯的使用方法。 …

NamedPipe IPC