Frage

Ich habe eine Reihe mehrerer Baugruppen (eine Baugruppe soll als API verwendet werden und hängt von anderen Baugruppen ab).Ich möchte alle Baugruppen zu einer einzigen Baugruppe zusammenführen, aber verhindern, dass alle Baugruppen außer der API-Baugruppe von außen sichtbar sind.

Ich werde diese Assembly dann mit Xenocode verschleiern.Soweit ich gesehen habe, ist es unmöglich, die Assembly mit Xenocode zu verinnerlichen.

Ich habe ILMerge von Microsoft gesehen, konnte aber nicht herausfinden, ob es das tun kann, was ich will.http://research.microsoft.com/~mbarnett/ILMerge.aspx

War es hilfreich?

Lösung 2

Ich weiß, dass Xenocode Assemblys zu einer zusammenführen kann, bin mir aber nicht sicher, ob es auch andere nicht-primäre Assemblys verinnerlichen wird.

Ich habe in ILMerge den Schalter /internalize gefunden, der alle Baugruppen außer der primären „verinnerlicht“.Ziemlich nützlich!

Andere Tipps

Ich habe ILMerge von Microsoft verwendet, um DLLs in einer einzigen zusammengestellten Bibliothek zu internalisieren.Für die Verwendung von ILMerge gibt es eine nützliche GUI namens NuGenUnify.Du kannst es finden Hier.

Ich schlage vor, dass Sie sich das ansehen InternalsVisibleTo Attribut auf MSDN.

Sie können alles in allen Assemblys (außer der API-Assembly) als markieren internal anstatt public, und zeigen Sie sie dann nur Ihrer API-Assembly erneut an.

Wenn Sie dies getan haben, sollten Sie mit ILMerge eine einzelne Assembly erhalten, in der nur die API-Klassen sichtbar sind.

Dort sind einige Probleme mit ILMerge, aber ich denke, wenn Sie Optimierungen + Zusammenführung + Verschleierung hinzufügen, werden Sie wahrscheinlich eine hochkomplexe Situation mit geringem Nutzen schaffen.

Warum haben Sie nicht nur eine Assembly und machen nur Ihre API öffentlich?

Wenn Sie sie immer als einzelne Assembly verteilen, gibt es keinen Grund, sie nicht einfach so zu kompilieren.Sie profitieren stärker von Compiler-Optimierungen und können auch schneller kompiliert werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top