2010-01-09 5 views
0

J'ai ajouté un fichier de ressources à mon projet appelé CrpResource.resx. Ensuite, après avoir ajouté un fichier texte au fichier de ressources, je veux y accéder et en lire le code.Utilisation de C#, Comment accéder à un fichier de ressources (.resx) et lire à partir d'un fichier texte ajouté?

toute suggestion s'il vous plaît.

+0

Resx a quelques nuances en lisant ... qu'est-ce qui ne va pas en utilisant simplement le code généré par le concepteur qui va avec le resx? Peut-être avec une réflexion? Ou, alternativement - n'utilisez pas resx; il suffit d'inclure les fichiers en tant que ressources. –

Répondre

1
_assembly = Assembly.GetExecutingAssembly(); 
_textStreamReader = new StreamReader(_assembly.GetManifestResourceStream("MyNamespace.MyTextFile.txt")); 

Voir ci-dessous:
http://support.microsoft.com/kb/319292

+0

Qu'est-ce que MyNameSpace? Est-ce le nom du fichier de ressources? – odiseh

+0

C'est l'espace de noms de votre projet. Dans VS> Projet> Propriétés, vous obtiendrez l'espace de noms – Brij

+0

Donc, basé sur votre dernier commentaire, il n'y a pas besoin de mettre le nom du fichier de ressources après le nom de l'espace de noms? – odiseh

2

@Brij a fourni le noyau de la réponse.

Cependant, le plus difficile ici est de savoir quel est le nom de la ressource - il n'est pas toujours facile, après l'intégration d'un fichier en tant que ressource, de définir son nom complet.

Un moyen facile de savoir est d'ajouter cette ligne temporairement à votre code:

string[] names = Assembly.GetExecutingAssembly().GetManifestResourceNames(); 

Lancez ensuite le programme, et vous pouvez voir la liste « noms » de toutes les ressources disponibles dans le débogueur.

+0

Comme je le vois dans CrpResource.Designer.cs, tout ce que j'ai ajouté au fichier de ressources est une propriété. Comment puis-je utiliser cette opportunité? – odiseh

+0

Vous pouvez accéder directement aux ressources via le nom de leur propriété, mais cela vous donne une instance de la ressource plutôt que ses données brutes (par exemple, une icône comme 'Properties.Resources.AppIcon' sera un objet Bitmap lorsque vous essaierez de l'utiliser. devrait donc lui demander de sérialiser en un MemoryStream et ensuite relire à partir de ce MemoryStream si vous vouliez les données "fichier" brutes de celui-ci) –

Questions connexes