7 Stimmen

Wie kann ich einen Stapel von .NET-DLLs in ein Visual Studio-Projekt dekompilieren?

Ich muss nur nach Textstellen in meinem C#-Code suchen.

Ich habe bereits .NET Reflector und das File Disassembler Add-In, aber diese scheinen nur eine DLL zu dekompilieren.

4voto

KUTlime Punkte 3136

Eigentlich ist keine dieser Antworten richtig.

Ja, alle Tools können dekompilieren *.dll Dateien in *.csproj Datei aber keine von ihnen unterstützt CLI oder Stapelverarbeitung . Sie können sich die Zeit mit Installationen sparen.

Die bestmögliche Lösung ist bisher die Verwendung von dotPeek setzen alle *.dll Dateien in einen Ordner und verwenden Ordner erforschen opción.

Explore Folder in dotPeek

dotPeek analysiert den angegebenen Ordner und zeigt einen Baum von DLL s innerhalb des Ordners. Sie können erzeugen csproj manuell für jeden einzelnen dll die geladen wird.

DLL tree


Wenn Sie auf diesen Beitrag gestoßen sind, weil Sie eine Antwort auf die Frage suchen, wie Sie eine bestimmte Anweisung in Ihrem oder einem Drittanbieter dll s, insbesondere eine Verwendung von Reflection, können Sie dieses PowerShell-Skript zum Dekompilieren verwenden dll s in IL und suchen Sie die Anweisung ( System.Reflection.Assembly::Load(string) zum Nachdenken).

Hinweis

Es wird der Intermediate Language DisASseMbler (ILDASM) aus dem .NET Framework SDK-Kit verwendet. Passen Sie den Pfad entsprechend Ihrer Version des SDK an.

function Get-LibDump
{
    Param(
# Specifies a path to one or more locations. Wildcards are permitted.
    [Parameter(Mandatory=$true,
            Position=0,
            ParameterSetName="Basic",
            ValueFromPipeline=$true,
            ValueFromPipelineByPropertyName=$true,
            HelpMessage="Path to one or more locations.")]
    [ValidateNotNullOrEmpty()]
    [SupportsWildcards()]
    [ValidateScript({$_ | Test-Path})]
    [System.IO.FileInfo]
    $Path
    )
    process
    {
        $dumpFileFilePath = $Path.BaseName + '.il'
        $outFile = "C:\LibDump\$dumpFileFilePath"
        Start-Process -FilePath 'c:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.2 Tools\ildasm.exe' -ArgumentList "/UNICODE /OUT=`"$outFile`" `"$($Path.FullName)`"" -Wait
        "Dump from:`n$(Resolve-Path -Path $Path.FullName -Relative)" | Out-File -FilePath $outFile -Encoding:unicode -Append
    }
}

# Use
Get-ChildItem -Path $PathToLibFolder -Filter '*.dll' -File -Recurse | Get-LibDump

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X