Comment fusionner plusieurs assemblées en un seul?
Je consomme mon service de la pile à l'aide de EXE du projet (tâche de démarrage pour azure application) que j'ai copié de service suivantes pile DLL & certains Azure Dll à projet EXE.
Quand j'ai construit ce projet EXE puis Azure Dll sera livré avec mon EXE, mais le service de la pile de la DLL ne sera pas livré avec EXE, parce que mon exécutable sur une machine j'ai besoin de copier tous les services de la pile de la DLL manuellement.
J'ai utilisé ce service de la pile de la dll à utiliser
JsonServiceClient client = new JsonServiceClient(servicepath);
Que dois-je faire pour groupés tous ces Dll dans mon EXE?
Vous devez vous connecter pour publier un commentaire.
Vous avez plusieurs options:
Pour howto voir ici et ici
OU
il peut intégrer et fusionner entre autres choses (pas besoin de modifier votre code source)
OU
marquer toutes les dépendances nécessaires en tant que "ressource incorporée" - de cette façon, ils sont inclus dans le fichier EXE... vous devez organiser une
AssemblyResolve
gestionnaire qui au moment de l'exécution de lit à partir des Ressources et renvoie le besoin de Dll pour le .NET runtime...L'outil que vous cherchez s'appelle ILMerge .
C'est un outil de ligne de commande et peut être utilisée comme ceci:
Il y a aussi un article qui explique comment inclure ILMerge dans votre VS projet d'installation ici
Un excellent outil pour les assemblys référencés comme ressources incorporées est Costura (un Fody add-in). L'auteur Simon Kropp le décrit comme suit:
Le résultat est une super solution simple, qui ne nécessite chercher Costura.Fody de NuGet.
Caractéristiques:
Essayer ILMerge-GUI, l' .NET fusion.
C'est une interface graphique basée
Ilmerge
qui évite tout en ligne de commande de travail.Si vous avez WPF dépendances vos options peuvent être plus limitées..... ILMerge ne semble pas traiter avec ces. Costura.Fody (comme mentionné par Codefox ci-dessus) a parfaitement fonctionné pour nous, cependant, et a pris environ 5 minutes pour y aller... une très bonne expérience.
Installer avec Nuget (la sélection de la bonne de projet par défaut dans le Gestionnaire de paquets de la Console).
Il fusionne toutes les Dll de la mention "Copie Locale" = true et produit une fusion .EXE (à côté de la sortie standard, la plupart de ce qui est maintenant n'est pas nécessaire) qui est également compressé. Cela peut ensuite être utilisé de façon autonome.
La licence est MIT que de sorte que vous pouvez modifier ou de distribuer à titre requis.
https://github.com/Fody/Costura/
La caisse de la ServiceStack.Gap projet qui montre plusieurs exemples de howto ILMerge ServiceStack en un seul multi-plateforme .exe.
ServiceStack comprend également un certain nombre d'autres fonctionnalités qui est particulièrement bien adapté pour la création de ces embedded applications où il: