How do you extract classes' source code from a dll file?
Is there any software to 开发者_JAVA百科do this? I didn't find any useful information on the internet so I am asking here.
You cannot get the exact code, but you can get a decompiled version of it.
The most popular (and best) tool is Reflector, but there are also other .Net decompilers (such as Dis#). You can also decompile the IL using ILDASM, which comes bundled with the .Net Framework SDK Tools.
Only managed Languages like c#
and Java
can be decompiled completely.You can view complete source code.
For Win32 dll
you cannot get source code.
For CSharp dll Use DotPeek becoz it free and works same as ReDgate .Net Compiler
Have fun.
Use dotPeek
Select the .dll
to decompile
That's it
Use .NET reflector.
Use Refractor. Download from here.
- Open the software after installing.
- Press Ctrl + O and select your DLL File.
- Dll will be shown in left pane.
- Right click on Dll and select Export Source Code.
- Select the folder in which you want to export your files
- Wait for a while it may take 2-3 minutes
You can use Reflector and also use Add-In FileGenerator to extract source code into a project.
You can use dotPeek
The only thing I have to say is that when using it, right-click on the class to select Decompiled Source
instead of double-clicking, otherwise dotpeek will only display the contents of the local cs file, not the decompiled content.
If you want to know only some basics inside the dll assembly e.g. Classes, method etc.,to load them dyanamically
you can make use of IL Disassembler tool provided by Microsoft.
Generally located at: "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin"
I used Refractor to recover my script/code from dll file.
public async void Decompile(string DllName)
{
string destinationfilename = "";
if (System.IO.File.Exists(DllName))
{
destinationfilename = (@helperRoot + System.IO.Path.GetFileName(medRuleBook.Schemapath)).ToLower();
if (System.IO.File.Exists(destinationfilename))
{
System.IO.File.Delete(destinationfilename);
}
System.IO.File.Copy(DllName, @destinationfilename);
}
// use dll-> XSD
var returnVal = await DoProcess(
@helperRoot + "xsd.exe", "\"" + @destinationfilename + "\"");
destinationfilename = destinationfilename.Replace(".dll", ".xsd");
if (System.IO.File.Exists(@destinationfilename))
{
// now use XSD
returnVal =
await DoProcess(
@helperRoot + "xsd.exe", "/c /namespace:RuleBook /language:CS " + "\"" + @destinationfilename + "\"");
if (System.IO.File.Exists(@destinationfilename.Replace(".xsd", ".cs")))
{
string getXSD = System.IO.File.ReadAllText(@destinationfilename.Replace(".xsd", ".cs"));
}
}
}
精彩评论