Gibt es ein Dienstprogramm zum Teilen einer einzelnen .NET-Assembly in eine Teilmenge der vollständigen Assembly? I.e. die "funktionale Umkehrung" von ILMerge.exe?
Dieses Werkzeug wäre natürlich schwierig zu erzeugen, wenn es Abhängigkeiten usw. zwischen Klassen, Funktionen usw. aufspüren müsste.
Allerdings suche ich nach einem Fall, in dem ich eine sehr große (hunderte von MB) Mixed-Mode-Assembly mit meist statischen Klassen und statischen Methoden habe, im Grunde genommen nur eine Funktionsbibliothek. Obwohl mit einer DLLMain-Initialisierung und ähnlichem.
Was ich gerne hätte, wäre in der Lage zu sein, eine Liste von statischen Methoden für bestimmte statische Klassen anzugeben, die ich in der Subset-Assembly behalten möchte. Technisch sollte dies möglich sein, da eine Assembly nur eine binäre Information mit einem standardisierten Format ist.
Gibt es das also oder wie könnte das gemacht werden? Oder warum wäre das unpraktisch?
Nein, sehr hohe Chancen, dass dieses Tool nicht existiert. Die Abwesenheit des Tools kann jedoch niemals positiv widerlegt werden.
Diese IL-Rewriting-Tricks funktionieren ohnehin nicht im gemischten Modus, ILMerge unterstützt sie auch nicht. Solche Assemblies enthalten nicht nur IL, sie haben auch Maschinencode und eine Verschiebungstabelle. Es gibt keine einfache Möglichkeit, Maschinencode auseinander zu nehmen, vor allem, weil es nicht nur reinen Code enthält, sondern auch Daten enthält. Wie Sprungtabellen für eine switch-Anweisung. Auch der Grund dafür, dass Programmierer, die Code in einer Muttersprache schreiben, sich nicht mit Obfuscatoren beschäftigen. Decompiling-Code ist eine große Zeit und immer unvollkommen.
Zum Beispiel ist es wahrscheinlich, dass Ihre Assembly groß ist, weil sie viel nativen Code enthält. Sie müssen dies auf Projektebene angehen und dieses Mongo-Projekt in kleinere aufteilen und den Quellcode zwischen ihnen verteilen. Das ist Arbeit. Und nicht immer immer einfach, Linker-Fehler sind eine häufige Geißel, wenn Sie dies tun. Wahrscheinlich müssen Sie Code-Deklarationen ändern, damit sie exportiert werden können. Nur eine Möglichkeit, dies zu tun, beginnen Sie am Anfang und spalten Sie zuerst einen Unterabschnitt ab, so dass Sie jetzt eine nicht so große Baugruppe und eine kleine Baugruppe haben. Spülen und wiederholen. Achten Sie auf die Kosten, viele Baugruppen machen den Kaltstart eines Programms langsamer.
Tags und Links .net c# il ilmerge mixed-mode