dekompilieren / ILSpy / Fehlermeldungen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Niko Ortner.

    dekompilieren / ILSpy / Fehlermeldungen

    Hallo!

    ​Ich habe mehrere .net-dlls die ich mit ILSpy dekopilieren möchte um sie dann in mein Projekt einzubinden.
    ​Jedoch bekomme ich dann beim öffnen in VS ständig Fehlermeldungen.

    ​Werden diese nicht richtig dekompiliert? Sie sind ja nichtmal in C#, sondern liegen als VB.net vor..
    ​..die .dlls funzen einwandfrei wenn ich sie im Projekt benutze, nur nachm dekompilieren funzen die nicht mehr!

    ​Hab auch schon Refractor probiert, selbes Problem, aber z.T. andere Fehlermeldungen..
    ​..was kann ich nun tun um die Dateien richtig zu dekompilieren?!?
    Um eine DLL in ein Projekt einzubinden, muss man sie nicht dekompilieren. Man fügt einen Verweis hinzu.
    Du meinst wahrscheinlich, dass Du die DLL dekompilierst und dann den Code in Dein Projekt kopierst. (Beachte dabei rechtliches, wenn die DLL nicht von Dir stammt.)
    .NET DLLs (generell Assemblies) beinhalten nicht den originalen Code, sondern MSIL ("Microsoft Intermediate Language"). Das ist ein Zwischencode, der unabhängig von der Sprache ist, mit der er erstellt wurde. Das heißt, dass Du C#, VB.NET, F# oder jede andere .NET-Sprache verwenden kannst, um (bis auf ein paar Details natürlich) den gleichen MSIL-Code zu erstellen.
    Das heißt, Dekompilieren ist nie perfekt. Die MSIL-Ansicht in ILSpy funktioniert sehr gut. Da kannst Du Dir die Text-Repräsentation des rohen Codes ansehen. Die C#-Ansicht funktioniert ebenfalls sehr gut und ist in den meisten Fällen frei von Bugs. Allerdings lässt die VB-Ansicht sehr zu wünschen übrig.
    Generell muss man bei dekompiliertem Code immer ein bisschen nachbearbeiten.
    Wenn Du konkret Probleme mit manchen Fehlern hast (z.B. wenn Du nicht weißt, wie Du sie beheben kannst), dann kannst Du gerne fragen.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils

    Morrison schrieb:

    was kann ich nun tun um die Dateien richtig zu dekompilieren?!?
    Ohne jetzt hier in Rechtsberatung auszuarten:
    Das ist zunächst illegal, es sei denn, Du hast die explizite Erlaubnis des Copyright-Inhabers.
    Was ist das für eine DLL, wer hat sie veröffentlicht?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Programmbibliotheken sind dazu da um diese dem Programm als Verweis hinzuzufügen.
    Jedes halbwegs vernünftige Programm lässt diese im Verzeichnis liegen und fertig.
    Alles andere ist (tut mir leid) Schwachsinn.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    ist in diesem Falle imo weniger eine Frage von Rechten als von Logik.
    Eine Dll dekompilieren, den Code dann den anderen Sources zufügen, die dann auch nix anneres werden als kompiliert...
    Also mir erschliesst sich der Sinn vons das auch nicht: Birgt nur viele FehlerQuellen, und im allerbesten Falle (kein Auftreten von Fehlern) bewirkt es garnichts - ausser dass seine Sources womöglich exorbitant unübersichtlicher werden.

    Wenner den Code abändern muss, ergäbe es vlt. einen Sinn, aber wie gesagt, erkauft durch ziemlich viele Risiken - vollkommen unnötig, wenn man die Dlls einfach so verwendete, wie sie vorgesehen sind.
    Also es geht um diesen Code: sourceforge.net/projects/csid3lib/

    Hab gesehen das der doch in C# ist und ich ILSpy auf vb.net gestellt hatte! *grml*

    ​Nunja, es ging mir nur darum nicht noch zusätzliche .dlls im Verzeichnis zu haben sondern nur eine .exe!

    ​Ich denke das Thema hat sich erstmal erledigt, falls ich beim konvertieren Fehlermeldungen bekomme meld ich mich nochmals gesondert!

    Danke an alle! ;)
    Dafür gibt's übrigens auch bessere Tools. ILMerge zum Beispiel.
    Alternativ kann man auch die DLLs in die Exe einbetten und beim (ersten) Start auspacken.
    Aber das alles ist nur in sehr seltenen Fällen wirklich nötig. DLLs im Programmverzeichnis zu haben ist was ganz normales. Und auch hier gilt: Rechtliches beachten. Der Autor der DLL kann z.B. das Einkompilieren untersagen.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils