Hello Hello!

J'utilise ce soft: http://freddyboy.developpez.com/software/index.html

Voici mon histoire :
j'ai parcouru des forums pendant des heures pour resoudre mon probleme d'embedded resource. Debutant en programmation, je me suis heurte a bien
des difficultes. La premiere etant de contourner les erreurs de type
"System.OutOfMemoryException", du a l'ajout massif "d'embedded resources"
Images(jpg), directement dans mon ".exe". Cette methode, consistant a ajouter des images par le menu Resources puis de selectionner "Embedded",
entraina un croissance proportionnelle du fichier "Resources.resx".

Voici le code que j'utilisais pour assigner mes images a ma PictureBox1 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
PictureBox1.Image = CType(My.Resources.ResourceManager.GetObject(T(i,1)), Image)
T(,) stocke le nom de mes images.

Les soucis arriverent lorsque ce fichier atteignit env. 75Mo (850000 lignes).
En effet, le menu resources de VS2008 n'etait plus accessible, et un joli
"System.OutOfMemoryException" remplacait l'interieur de la fenetre.

J'ai tente differentes solutions glanees ici et la pour tenter de resoudre ce probleme : modification du registre, installation SP1, modification des
parametres de Denvenv.exe...Rien de fonctionna. De toute maniere, meme
sur un autre ordinateur ou je fis des tests, equipe de 8Go de RAM, les
problemes de "OutOfMemory" se produisirent.
La solution devait donc etre ailleurs : eviter de remplir le fichier
"Resources.resx" fut un debut. Pour cela, je supprima mon fichier "resources.resx" devenu illisible et lors du lancement de VS le
programme en crea un nouveau, vierge. J'ajouta donc mes Images directement
en faisant un clic droit sur Resource dans "solution Explorer", et en
choisissant "Add\Existing Item...."
L'appel de mes images se fit par le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
PictureBox1.Image = New Bitmap(Me.GetType(), T(i, 1))
Le fichier "Resources.resx" plafonna a quelques Ko et la RAM utilisee ne
depassa pas les 250Mo (environ 200 images de 300ko dans les ressources)
lors de la construction du projet : tout allait bien!

La suite des embetements fut detectee lorsque je copia mon projet sur
ma cle USB et que je le continua sur un ordi moins puissant (core 2 duo 2.6G, 2Go Ram). Cette fois ci, j'obtins des erreurs "Insufficient Memory... ..." lorsque
je compilais mon programme. Ces erreurs n'etaient pas systematique, et je
devais redemarrer VS pour tenter de re-compiler.

J'en avais marre de ces problemes...la solution qui se presenta tout
simplement fut d'externaliser les resources, dans une DLL par exemple.
Voila comment je suis tombe sur cette page!
Pour tout vous dire, je ne souhaitais utiliser qu'un ".exe" pour mon
programme, et pas de fichiers annexes.
Quoiqu'il en soit, apres avoir copie "Al.exe" dans
"C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322" j'ai pu creer une DLL
de Resource Only, merci Freddy!
Je modifia mon code comme ceci, merci joefou :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
   Dim myAssembly As System.Reflection.Assembly = System.Reflection.Assembly.LoadFile(Environment.CurrentDirectory & "\MyPictures.resources.dll")
            Dim myResources As System.Resources.ResourceManager = New System.Resources.ResourceManager("MyPictures", myAssembly)
            PictureBox1.Image = CType(myResources.GetObject(T(i,1)), System.Drawing.Image)
et ajouta ma DLL en tant que Reference.

Pour le moment je n'ai plus de soucis, tout semble rouler comme il faut.
Aller, j'arrete, de toute maniere j'ai tout dis .

Bonne continuation!

Cz