C# ajouter une référence en utilisant uniquement du code (pas d'IDE “Ajouter une Référence” fonctions)
Je suis d'écrire un plugin pour un programme, et je veux mettre mon code à l'intérieur d'une DLL afin que je puisse partager le plugin librement, sans exposer (donner) mon code.
Ici est la structure de base, j'ai accès à :
using System;
public class Plugin
{
public void Initialize()
{
//do stuff here
doWork();
}
}
Alors je viens de référence de l' .cs fichier mon code est ainsi que le programme "mange" jusqu'à ce Plugin. Maintenant, j'ai mis plusieurs de logique là-dedans, constitué principalement des fonctions qui ne sont pas liés directement à la "Initialize()", uniquement sur le doWork() de la fonction, qui commence à l'ensemble du système.
Maintenant, je veux mettre tout mon code à l'intérieur d'une DLL, et puis il suffit d'appeler à partir de l'intérieur de l'Initialiser(), madll.doWork() (ou quelque chose comme ça).
PS: Cette dll serait ofc être compilé en C# de la bibliothèque (pourrait-il en être appelées ensemble dynamique d'importation? il ne serait pas vraiment être dynamique car il serait compilé avant l'exécution de toute façon, non?)
PS2: de Cette façon, je peux également ajouter des ressources comme les formes, les images et sans trop de difficulté droite?
PS3: Est-il un outil gratuit pour protéger le code à l'intérieur de ces DLL? (c'est à dire protéger d'être facilement re-engineering)
Merci d'avance =)
OriginalL'auteur Joao Carlos | 2009-09-12
Vous devez vous connecter pour publier un commentaire.
Trouvé exactement ce que je cherchais, c'est ici:
MyNamespace.MyClass
la mettre en œuvre, vous pouvez lancerobj
à cette interface, et appeler des méthodes sans réflexion.Ah oui...l'interface est exactement la façon dont j'ai besoin pour ce faire. J'ai créé une classe dans une autre .dll. Je suis instanciation de ce à travers le code ci-dessus, mais, bien sûr, 'obj' n'est pas de me donner les propriétés ou fonctions au sein de la classe. Je n'ai pas l'esprit de la nouvelle bibliothèque de référencement, l'un dans l'interface .exe, mais le .exe n'aura jamais la moindre idée de ce "plugins" il aurait de référence. Génial!!!
OriginalL'auteur Joao Carlos
La meilleure option serait d'utiliser un framework pour créer des applications extensibles:
Si vous voulez le faire manuellement, vous pouvez utiliser le De l'assemblée.Charge*() méthodes pour charger un assembly à l'exécution. Vous pouvez rechercher l'assemblée pour les types qui implémentent une interface spécifique et ensuite créer des instances à l'aide de Activateur.CreateInstance. Les assemblées peuvent être compilés séparément, il vous suffit de faire référence à un assembly qui contient l'interface partagée par l'application et le plugin.
De la confusion, il y a un couple de la dissimulation de l'outils disponibles.
MEF est inclus dans .NET 4.0. Pour les versions antérieures à 4.0, vous devez envoyer à votre demande. Mono.Addins devrait travailler avec .NET 4.0, mais n'est évidemment pas inclus.
OriginalL'auteur dtb
Utiliser la statique de l'Assemblée.Load() /Assemblée.LoadFile() /Assemblée.LoadFrom() permettent de charger dynamiquement des assemblées.
OriginalL'auteur codymanix
Pour info, n'oubliez pas d'utiliser un outil comme Red-Gate .Net Réflecteur pour inspecter votre fichier DLL pour s'assurer qu'il est bien dissimulé. Ce gratuit, visual outil vous permet de voir la DLL en tant que verront les utilisateurs de sorte que vous saurez si votre code est exposée
le texte d'alt http://img149.imageshack.us/img149/2025/screenshotfullscreen.gif
.Net est livré avec Dotfuscator Community Edition qui peut être utilisé pour dissimuler votre code. Aucun codage nécessaire, voir leur guide de l'utilisateur d'apprendre votre chemin autour de l'interface graphique si vous avez besoin d'aide.
Trouvé peu de documentation, mais, peut sembler en trouver un qui fonctionne avec le Framework 4. Toutes les suggestions?
Depuis .NET 4 est un logiciel beta (sans aucune forme de licence go live) vous ne trouverez pas beaucoup de soutien. Actuellement, il n'existe pour le test (et d'apprentissage).
La version gratuite de Dotfuscator livré avec Visual Studio 2010 va embrouiller .NET 4.0 assemblées comme toute version commerciale de Dotfuscator de 4.5.12000 sur place.
OriginalL'auteur Michael La Voie