I - Pré-requis :
Votre projet principal est obligatoirement paramétré comme suit pour suivre ce tuto :
http://imabox.fr/a3/1402052310BMsGpq17.png
II - Le projet :
Mon projet principal se nomme "ImaboxUploader".
Les 2 autres projets attenants sont des librairies de classes ou fichiers ".dll et se nomment :
- ImaboxUploader.Components (fichier .dll : ImaboxUploader.Components.dll)
- ImaboxUploader.Core (fichier .dll : ImaboxUploader.Core.dll)
http://imabox.fr/a3/1402052311yGI4iC04.png
III - Quand je génère mon projet principal :
Lorsque je génère mon projet principal, les autres projets attenants sont aussi générés ce qui créé 3 fichiers dans mon répertoire ...\Bin\Release\ :
(ces 3 fichiers étant nécessaires au bon fonctionnement de mon application lorsqu'elle sera délivrée) :
http://imabox.fr/a3/1402052315f85w8s52.png
Cependant je ne veux pas livrer mon projet final avec 2 autres fichiers à côté donc il va me falloir fusionner les assemblys dépendantes (2 fichiers .dll) à mon exécutable principal (1 fichier .exe) afin de distribuer qu'un unique fichier exécutable (imaboxUploader.exe) !
IV - Ajouter les assemblys dépendantes dans les ressources :
- Tout d'abord il faut que votre projet soit fonctionnel en l'état !
- Dans mon exemple les 2 fichiers dll sont bien ajoutées en tant que références :
http://imabox.fr/a3/1402052323HEzFx815.png
- Nous allons maintenant ajouter ces 2 fichiers dll dans les ressources de notre projet en vue d'obtenir ceci dans les propriétés de mon projet principal :
http://imabox.fr/a3/1402052326ge7we502.png
...et grace à l'ajout dans les ressources on obtient donc cela dans l'explorateur de solutions :
http://imabox.fr/a3/1402052327DqWkrI25.png
IMPORTANT : n'oubliez pas de générer l'ensemble de votre projet afin que les fichiers dlls soient correctement intégrées dans les ressources !
V - Ajouter le code pour charger les assemblys dépendantes en mémoire au démarrage de l'application :
- Dans les propriétés du projet on clique sur le bouton suivant :
http://imabox.fr/a3/1402052332zQb4pA47.png
....on obtient ceci :
- Dans mon cas avec mes 2 dll je remplace le code existant par ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Namespace My ' Les événements suivants sont disponibles pour MyApplication*: ' ' Startup*: déclenché au démarrage de l'application avant la création du formulaire de démarrage. ' Shutdown*: déclenché après la fermeture de tous les formulaires de l'application. Cet événement n'est pas déclenché si l'application se termine de façon anormale. ' UnhandledException*: déclenché si l'application rencontre une exception non gérée. ' StartupNextInstance*: déclenché lors du lancement d'une application à instance unique et si cette application est déjà active. ' NetworkAvailabilityChanged*: déclenché lorsque la connexion réseau est connectée ou déconnectée. Friend Class MyApplication End Class End Namespace
IMPORTANT :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Namespace My Friend Class MyApplication Private WithEvents DLLDomain As AppDomain = AppDomain.CurrentDomain Private Function DLL_AssemblyResolve(ByVal sender As Object, ByVal args As System.ResolveEventArgs) As System.Reflection.Assembly Handles DLLDomain.AssemblyResolve If args.Name.Contains("ImaboxUploader.Components") Then Return System.Reflection.Assembly.Load(My.Resources.ImaboxUploader_Components) ElseIf args.Name.Contains("ImaboxUploader.Core") Then Return System.Reflection.Assembly.Load(My.Resources.ImaboxUploader_Core) Else Return Nothing End If End Function End Class End Namespace
- N'oubliez pas de générer de nouveau votre projet !
- Si vous voulez tester que cela fonctionne alors assurez-vous de déporter votre fichier executable à l'extérieur de votre répertoire de génération de projet et que vos fichiers dll ne soient pas à côté car il sont maintenant censés être intégrés dans les ressources !
Si vous avez des questions ???
Source d'inspiration du tuto : Source d'inspiration
Partager