La fusion des dll dans un seul .exe avec wpf
Je suis actuellement en train de travailler sur un projet dans lequel nous avons beaucoup de dépendances. Je tiens à compiler toutes référencé dans la dll dans le .exe beaucoup comme vous le feriez avec des ressources intégrées. J'ai essayé ILMerge mais il ne peut pas gérer .xaml ressources.
Donc ma question est: Est-il un moyen de fusionner un projet WPF avec plusieurs dépendances en un seul .exe?
- Vous êtes à la recherche uniquement pour les applications gratuites, ou vous pouvez payer peu d'argent pour lui?
- Si l'application est assez bon et peut gérer WPF, nous aurions probablement envisager commercial apps.
Vous devez vous connecter pour publier un commentaire.
.NET réacteur a la particularité de fusionner les assemblées et ce n'est pas très cher.
http://www.digitallycreated.net/Blog/61/combining-multiple-assemblies-into-a-single-exe-for-a-wpf-application
Cela a fonctionné comme un charme pour moi 🙂 et son complètement libre.
L'ajout de code dans le cas où le blog disparaît jamais.
1) Ajouter à votre
.csproj
fichier:2) vos Principaux
Program.cs
ressembler à ceci:3) Ajouter le
OnResolveAssembly
méthode:App.OnStartup()
était trop tard pour s'inscrireOnAssemblyResolve
, parce que le tempsOnStartup
a été appelé, mon application référencé quelques autres assemblées. Au lieu de cela, j'ai mis leOnAssemblyResolve
inscription dans leApp()
constructeur et cela a fonctionné comme un charme.Costura Fody est un outil open source conçu pour manipuler la fusion de wpf assemblées.
https://github.com/Fody/Costura#how-it-works
Could not find FodyWeavers.xml ...
. Donc, je viens de créé manuellement et mettre la configuration par défaut et cela a fonctionné comme par magie.{smartassembly} est un de ces produits. Il peut obsfucate ou embedd votre dll.
Essayez ceci: http://www.smartassembly.com/
Vous pouvez également faire beaucoup d'améliorations sur votre application de sorte qu'il sera exécuté plus rapidement.
Et oui. Vous pouvez l'utiliser pour WPF.
Mise à jour 8/06/2015:
ILRepack 2.0.0 (qui est une alternative open-source à ILMerge) a désormais en charge plus de WPF cas de fusion: https://twitter.com/Gluckies/status/607680149157462016
Posté sur ILMerge site web, traiter ces dll en tant que ressources, de Jeffrey Richter ici :
Utilisation Costura.Fody - Il est disponible en tant que Nuget Pkg pour le meilleur et le plus simple pour intégrer des ressources dans votre assemblée.
Après l'ajout au projet, il sera automatiquement incorporer toutes les références de votre assemblage principal.
Essayer .Netz ( http://madebits.com/netz/ ) - c'est gratuit (comme dans la bière) et fait de belles choses si vous êtes la cible est un fichier exe.
Ici est une version remaniée de la cité de code de Matthieu qui ne nécessite pas de connaître l'espace de noms pour extraire le code. En WPF, mettez ceci dans le démarrage de l'application code de l'événement.
Afin de les rendre disponibles au moment de la compilation, j'ai créer un dossier nommé ExternalDLLs et de copier la dll fixer à EmbeddedResource comme indiqué ci-dessus. Pour les utiliser dans votre code, vous devez encore définir une référence, mais placer la Copie locale de Faux. Pour obtenir le code à compiler proprement sans erreurs, vous devez également définir à l'aide de relevés dans votre code pour les espaces de noms de la dll.
Voici un petit utilitaire qui tourne grâce à la ressource incorporée noms et affiche leurs espaces de noms dans la fenêtre de sortie.
>
cliquez-droit sur le projet/propriétés/applications/starup objet /sélectionnez Sinhro.Programme
l'ajouter à votre programme.cs fichier:
en utilisant le Système.La réflexion;
en utilisant le Système.IO;
en utilisant le Système.La mondialisation;
source: http://www.digitallycreated.net/Blog/61/combining-multiple-assemblies-into-a-single-exe-for-a-wpf-application
Depuis toutes les autres solutions sont en C#, et j'avais besoin de cela pour VB.NET, cela comprend des précisions sur l'endroit où insérer le changement de configuration, les importations, et de la façon d'ajouter un gestionnaire, au lieu de C#'s += syntaxe.
Pour toute application WPF, et non pas de chaque projet, les informations suivantes doivent être ajoutés pour rendre le code à compiler en un seul fichier EXE. Il sera toujours inclure les DLL dans le dossier de sortie, mais l'EXE va contenir tous.
Code à coller