Frage

Ich bin ein Plugin für ein Programm writting, und ich mag meinen Code in einer DLL setzen, damit ich das Plugin frei meinen Code ohne auszusetzen (verlosen) gemeinsam nutzen kann.

Hier ist die grundlegende Struktur i Zugang zu:

using System;
public class Plugin
{
    public void Initialize()
    {
        //do stuff here
        doWork();
    }
}

Dann verweisen ich nur die CS- meinen Code-Datei an und das Programm „frisst“ up dieses Plugin. Nun, ich in mehrere Logik gesetzt habe, die hauptsächlich aus Funktionen, die gebunden Arent direkt auf „Initialize ()“, nur auf der doWork () Funktion, die beginnt, das gesamte System.

Nun, ich möchte meinen Code alle in einer DLL setzen, und dann rufen Sie einfach von innen Initialize (), myDll.doWork () (oder so ähnlich).

PS: Diese DLL würde OFC sein, eine # Bibliothek kompilierte C (? Es dynamischen Assembly Import nennen könnte es würde nicht wirklich dynamisch sein, da es sowieso vor der Ausführung kompiliert werden würde, rechts)

PS2: Auf diese Weise kann ich auch eigene Ressourcen wie Formen, Bilder und so ohne große Schwierigkeiten rechts

hinzufügen

PS3: Gibt es ein kostenloses Tool den Code in solchen DLL für den Schutz? (Dh Schutz von beeing leicht wieder engineered)

Vielen Dank im Voraus =)

War es hilfreich?

Lösung

Gefunden genau das, was ich suchte, hier ist sie:

using System.Reflection;
using System.IO;

try
{
    Assembly a = null;

    a = Assembly.LoadFrom(Application.StartupPath startupPath + "MyAssembly.dll"); 

    Type classType = a.GetType("MyNamespace.MyClass");
    object obj = Activator.CreateInstance(classType);
    MethodInfo mi = classType.GetMethod("MyMethod");

    mi.Invoke(obj, null);
}
catch (Exception e)
{                 
    AddLog(e.Message);            
}

Andere Tipps

Die beste Möglichkeit wäre, einen Rahmen zu verwenden, für die Erstellung von erweiterbaren Anwendungen:

Wenn Sie es manuell tun möchten, können Sie die Assembly.Load * () Methoden eine Baugruppe zur Laufzeit geladen werden. Sie können die Baugruppe für Typen suchen, die eine bestimmte Schnittstelle implementieren und dann Instanzen erstellen mit Activator.CreateInstance . Die Baugruppen können separat kompiliert werden, müssen Sie nur eine Assembly verweisen, die die Schnittstelle durch die Anwendung und Plugin geteilt enthält.

Für Verschleierungs gibt es ein paar von Verschleierungs Tools zur Verfügung.

Mit der statischen Assembly.Load () / Assembly.LoadFile () / Assembly.LoadFrom () Methoden, um dynamisch Baugruppen zu laden.

FYI, denken Sie daran, ein Werkzeug zu verwenden, wie Red-Tor .Net Reflector zu inspizieren Ihre DLL sicherzustellen, dass es richtig verschleiert wird. Dieser kostenlose, visuelles Tool können Sie sehen, die DLL als Benutzer es sehen, damit Sie wissen, wenn Ihr Code ausgesetzt ist

alt text http://img149.imageshack.us/img149/2025/screenshotfullscreen .gif

.Net kommt mit Dotfuscator Community Edition , die verwendet werden, um Ihren Code zu verschleiern. Keine Codierung erforderlich ist, sehen ihre Bedienungsanleitung rel="nofollow Ihren Weg durch die GUI lernen wenn Sie Hilfe benötigen.

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