Question

Je suis en train de travailler sur un module pour un CMS.Ce module est distribué comme un DLL de bibliothèque de classe.

J'ai plusieurs bibliothèques utilitaires que j'aimerais utiliser dans ce module.Est-il de toute façon je peux relier ces bibliothèques de manière statique, donc je n'aurai pas à distribuer plusieurs DLL (de ce fait, la distribution de mon utilitaire de bibliothèques séparément)?

Je voudrais avoir une seule DLL.

Était-ce utile?

La solution

Vous pouvez fusionner vos nombreuses Dll avec ILMERGE:

http://research.microsoft.com/~mbarnett/ILMerge.aspx

N'ai pas essayé moi-même.Espérons que cela aide.


Télécharger ici:
http://www.microsoft.com/downloads/details.aspx?familyid=22914587-B4AD-4EAE-87CF-B14AE6A939B0&displaylang=en

Brève Description (à partir d'un téléchargement de la page)
ILMerge est un utilitaire de fusion de plusieurs .NET assemblées en un seul .NET de l'assemblée.Il fonctionne sur les executables et les Dll de même et est livré avec plusieurs options pour contrôler le traitement et le format de la sortie.Voir la documentation pour plus de détails.

Autres conseils

Si vous ne souhaitez pas utiliser ILMerge, voir cette page:

http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr-via-c-third-edition.aspx

note de l'éditeur:Jeffrey Richter conseils pour mettre votre dll dans le fichier exe en tant que ressources (Pour chaque fichier DLL à ajouter, afficher ses propriétés et changer sa “Action de Construire” à la “Ressource Incorporée.”).Puis un class loader personnalisé est nécessaire pour faire le travail exécutable (Au moment de l'exécution, le CLR ne sera pas en mesure de trouver la DLL dépendante des assemblées, ce qui est un problème.Pour résoudre ce problème, lorsque votre application initialise, inscrire un rappel de la méthode avec le domaine d'application de la ResolveAssembly événement).

Assurez-vous de changer la resourceName chaîne au point de vos ressources réelles.(par ex.changement AssemblyLoadingAndReflection au nom du projet.)

La courte réponse à cette question est non!Vous ne pouvez pas le lien dans une dll lors de la compilation.Je ne sais pas si il existe une certaine manière subtile pour ce faire, mais vous serait probablement à distribuer les dll avec votre cms.La meilleure façon de le faire est de faire une sorte de re-distribuable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top