C# fügen Sie eine Referenz, die nur mithilfe von code (keine IDE "Verweis Hinzufügen" - Funktionen)
Ich bin writting ein plugin für ein Programm, und ich möchte meinen code in eine DLL, damit ich teilen kann, das plugin frei, ohne dass (verschenkt) mein code.
Hier ist die grundlegende Struktur, die ich haben Zugriff auf :
using System;
public class Plugin
{
public void Initialize()
{
//do stuff here
doWork();
}
}
Dann habe ich einfach die Referenz .cs-Datei meinen code, und das Programm "frisst" sich dieses Plugin. Nun, ich habe einige Logik in es, bestehend hauptsächlich aus Funktionen, die nicht direkt gebunden an die "Initialize()", nur auf der doWork () - Funktion, beginnt das ganze system.
Nun möchte ich alle meine code in eine DLL, und dann rufen Sie von innen Initialize(), myDll.doWork() (oder so ähnlich).
PS: Diese dll würde ofc ein kompiliertes C# - Bibliothek (könnte es sein, das sogenannte dynamische assembly zu importieren? es würde nicht wirklich dynamisch, da wäre es kompiliert vor der Ausführung sowieso, oder?)
PS2: auf Diese Weise kann ich auch hinzufügen, benutzerdefinierte Ressourcen, wie Formen, Bilder und so ohne große Schwierigkeiten Recht?
PS3: gibt es ein kostenloses tool für den Schutz der code, der in eine solche DLL? (also Schutz von beeing leicht re-engineered)
Vielen Dank im Voraus =)
InformationsquelleAutor Joao Carlos | 2009-09-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gefunden genau das, was ich suchte, hier ist es:
MyNamespace.MyClass
implementieren, können Sie werfenobj
auf die Schnittstelle und Methoden aufgerufen werden, ohne Reflexion.Ah ja...das interface ist genau so, wie ich dies tun müssen. Ich habe eine Klasse in einer separaten .dll. Ich bin instancing dies durch den obigen code, aber, natürlich, 'obj' ist nicht, dass Sie mir die Eigenschaften oder Funktionen innerhalb dieser Klasse. Ich bin nicht dagegen, die neue Bibliothek verweisen auf eine Schnittstelle der .exe-Datei, aber die .exe wird nie haben keine Ahnung, was 'plugins' es hätte verweisen müssen. Genial!!!
InformationsquelleAutor Joao Carlos
Wäre die beste option sein, zu verwenden, ein framework zur Erstellung von erweiterbaren Anwendungen:
Wenn Sie möchten, dies manuell zu machen, Sie können die Montage.Load*() Methoden zum laden einer assembly zur Laufzeit. Sie können nach der Montage für die Typen, die eine bestimmte Schnittstelle implementieren, und dann erstellen Sie Instanzen mithilfe Activator.CreateInstance. Die Assemblys können getrennt kompiliert werden, Sie müssen nur Referenz auf eine assembly, enthält die Schnittstelle, die gemeinsam von Anwendung und plugin.
Zur Verschleierung, es gibt ein paar von obfuscation-tools zur Verfügung.
MEF ist im Lieferumfang enthalten .NET 4.0. Für Versionen vor 4.0 müssen Sie senden es mit Ihrer Anwendung. Mono.Addins arbeiten sollte .NET 4.0 auch, aber ist natürlich nicht im Lieferumfang enthalten.
InformationsquelleAutor dtb
Verwendung der statischen Baugruppe.Load() /Montage.LoadFile() /Montage.LoadFrom () - Methoden zum dynamischen laden von assemblies.
InformationsquelleAutor codymanix
FYI, denken Sie daran, verwenden Sie ein tool wie Red-Gate .Net Reflector um zu überprüfen Ihre DLL, machen Sie sicher, dass es richtig ist, verschleiert. Dieses Kostenlose, visuelle tool können Sie sehen, die DLL als Ihre Benutzer werden 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 können, um Ihren code zu verschleiern. Keine Codierung erforderlich ist, finden Sie Ihre Bedienungsanleitung zu lernen, Ihren Weg um die GUI, wenn Sie Hilfe benötigen.
Fand einige Unterlagen, aber kann nicht scheinen, einen zu finden, funktioniert mit Framework 4. Irgendwelche Vorschläge?
Da .NET 4 ist beta-software (ohne jede form von go-live-Lizenz) werden Sie nicht finden viel Unterstützung. Es existiert im Moment nur zum testen (und zu lernen).
Die Kostenlose version von Dotfuscator, die ausgeliefert wird mit Visual Studio 2010 zu verschleiern .NET 4.0 assemblies als kommerzielle version von Dotfuscator von 4.5.12000 auf.
InformationsquelleAutor Michael La Voie