c#创建和附加DLL到项目

c# create and attach dll to project

本文关键字:DLL 项目 创建      更新时间:2023-10-16

我想在c#中创建一个类库项目,并将其附加到一个进程。

我已经在c++中做过了,我的代码是

#include <windows.h>
void Thread()
{
// here i just do my stuff
}
int WINAPI DllMain(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
    if(reason==DLL_PROCESS_ATTACH)
    {
         CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Thread, 0, 0, 0);
    }
    return 1;
}

这个很适合我。

可以在c#中做到这一点吗?

谢谢,我希望我能找到一个答案并接受它。

c#没有DllMain这样的机制,当你从可执行文件中引用或使用代码时,你可以执行代码。可执行文件需要显式地调用(或至少使用)库中的类型的方法,以便代码执行。

如果你知道你的库中的一个类型将被使用,然而,你可以"欺骗"并通过将它放在该类型的静态构造函数中来启动你的线程。这将导致它在第一次使用该类型时或之前执行。

话虽这么说,如果你正在编写要使用这个c#库的exe,你可以在一个类型上调用一个方法来开始你的线程并开始你的工作。

跟着这里的讨论。

给你的类一个静态构造函数并在那里进行初始化。它将在任何人第一次调用静态方法或属性时运行或构造类的实例。

好像你可以使用模块初始化器。不幸的是,c#不支持它们。您必须注入IL,例如使用模块初始化器或Fody

之类的工具。