I want to know What are the exact
differences between .NET dll and a normal dll.
First question, what is "normal DLL" called? I'm using the word 'normal'. But it doesnt seem right?
Because both follow the PE format. Yeah, I agree that .NET DLL has an extra section. Other than that every thing else is same.
I also know that in .NET code is converted into CIL/MSIL then what is filled in .text section of PE file? MSIL? because there is no binary code. But if they put MSIL in .text section. Loader assumes that its a binary code and allows it to execute. Which is not the case. What am I missing?
I'm surprised to know that
Even the DLL file extension is artificial. You can have DLLs with entirely different extensions—for instance .OCX controls and Control Panel applets (.CPL files) are DLLs.
What else extensions are used for DLL files?
But I can understand the reason for using different extensions. Why didn't they follow do the same thing in case of .NET DLLS? they could of used a new extension to differentiate it from the "normal" DLL. They even have a different name (ASSEMBLY
) for dlls in .NET but couldn't change the extension. huh?
Another completely different question: What is DLL registration? they use regsvr32.exe for it. right? I noticed it when I installed Windows XP SP3. After the installation & before restarting windows, I checked startup list and found lot of regsvr32.exe
entries with lot of DLLs.
Please feel free to dive into as much depth as you like. I'm learning about linkers,loaders,binary formats. I'm familiar with PE file format also.