¿Cómo se puede extraer el código fuente clases de un archivo DLL?
-
11-10-2019 - |
Pregunta
¿Hay algún software para hacer esto? No he encontrado ninguna información útil en Internet por lo que estoy pidiendo aquí.
Solución
No se puede obtener el código exacto, pero se puede obtener una versión descompilación de la misma.
El (y mejor) herramienta más popular es Reflector , pero también hay otros descompiladores .Net (como Dis # ). También puede descompilar el uso de IL ILDASM , que se suministra junto con las herramientas de SDK de .NET Framework.
Otros consejos
Idiomas Sólo administrados como c#
y Java
puede decompiled completely.You puede ver el código fuente completo.
Para Win32 dll
no se puede obtener el código fuente.
Para CSharp DLL Uso dotPeek becoz es gratuito y funciona igual que Redgate .Net Compiler
divertirse.
Se puede utilizar Reflector y también utilizar Add-In FileGenerator al código fuente de extracto en un proyecto.
Uso refractor. Descarga desde aquí .
- Abra el software después de la instalación.
- Presione Ctrl + O y seleccione el archivo DLL.
- DLL se mostrará en el panel izquierdo.
- Haga clic derecho sobre DLL y seleccione el código fuente de exportación.
- Seleccione la carpeta en la que desea exportar los archivos
- Esperar durante un tiempo que puede tomar 2-3 minutos
Si usted quiere saber sólo algunos conceptos básicos dentro de la DLL de conjunto, por ejemplo, Clases, método, etc., para cargar ellos dyanamically
Puede hacer uso de la herramienta de IL desensamblador proporcionada por Microsoft.
En general ubicada en: "C: \ Archivos de programa (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin"
refractor para recuperar mi script / código de DLL archivo.
Se puede usar dotPeek La única cosa que tengo que decir es que al usarlo, haga clic en la clase para seleccionar decompilados Fuente en lugar de hacer doble clic, de lo contrario dotPeek sólo mostrará el contenido del archivo local cs, no el contenido decompilados.
var destinationfilename = "";
if (System.IO.File.Exists("nameoffile.dll"))
{
destinationfilename = (@helperRoot + System.IO.Path.GetFileName(medRuleBook.Schemapath)).ToLower();
if (System.IO.File.Exists(destinationfilename)) System.IO.File.Delete(destinationfilename);
System.IO.File.Copy(@'nameoffile.dll", @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")))
{
var getXSD = System.IO.File.ReadAllText(@destinationfilename.Replace(".xsd", ".cs"));
}
}