Je stocke un PNG en tant que ressource intégrée dans un assemblage. Dans le même assemblage, j'ai du code comme celui-ci:
Bitmap image = new Bitmap(typeof(MyClass), "Resources.file.png");
Le fichier, nommé «file.png» est stocké dans le dossier «Resources» (dans Visual Studio) et est marqué comme une ressource incorporée.
Le code échoue avec une exception disant:
La ressource MyNamespace.Resources.file.png est introuvable dans la classe MyNamespace.MyClass
J'ai un code identique (dans un assemblage différent, chargeant une ressource différente) qui fonctionne. Je sais donc que la technique est solide. Mon problème est que je finis par passer beaucoup de temps à essayer de trouver la bonne voie. Si je pouvais simplement interroger (par exemple dans le débogueur) l'assemblage pour trouver le chemin correct, cela me sauverait une charge de maux de tête.
Je me surprends à oublier comment faire cela à chaque fois, alors j'emballe les deux one-liners dont j'ai besoin dans un petit cours:
la source
Je suppose que votre classe est dans un espace de noms différent. La façon canonique de résoudre ce problème serait d'utiliser la classe resources et une ressource fortement typée:
Utilisez le gestionnaire de ressources de l'EDI pour ajouter des ressources.
la source
J'utilise la méthode suivante pour récupérer les ressources intégrées:
J'appelle ensuite cela avec le chemin dans le projet:
la source
Le nom de la ressource est l'espace de nom plus l'espace de nom «pseudo» du chemin d'accès au fichier. L'espace de nom "pseudo" est créé par la structure du sous-dossier en utilisant \ (contre-obliques) au lieu de. (points).
L'appel suivant:
renverra le flux de my.xml situé dans la structure de dossiers resources \ xml dans l'espace de nom: my.namespace.
la source