2009-01-11 13 views
104

Me gustaría incrustar un archivo de texto en un ensamblado para que pueda cargar el texto sin tener que leerlo desde el disco, y para que todo lo que necesito esté contenido en el archivo ejecutable. (Para que sea más portátil)¿Cómo incrustar un archivo de texto en un ensamblado .NET?

¿Hay una manera de hacer esto? Supongo que algo con los archivos de recursos?

Y si se puede, ¿cómo se hace y cómo se puede cargar programaticaly el texto en una cadena?

Respuesta

127

Haga clic en el archivo de proyecto, seleccione Propiedades.

En la ventana que se abre, vaya a la pestaña Recursos y, si tiene sólo un enlace azul en el medio de la lengüeta de la página, haga clic en él, para crear un nuevo recurso.

enter image description here

Luego de la barra de herramientas sobre la lengüeta de la página, seleccione para añadir un nuevo archivo de texto, darle un nombre, que se añadirá a su proyecto y abrió.

Si llegas a este punto, a continuación, en el código se puede escribir en Resources.TheNameYouGaveTheTextFileHere y se puede acceder a su contenido. Tenga en cuenta que la primera vez que use la clase Resources en una clase, debe agregar una directiva using (presionar Ctrl +. Después de escribir Resources para obtener el menú y hacer que VS lo haga por usted).

Si algo estaba claro acerca de la descripción anterior, por favor deje un comentario y voy a editar hasta que se haya completado o tiene sentido :)

+1

¿Cómo se vería el código de la directiva 'using', estoy luchando para que esto funcione. He agregado solutions.txt como recurso, pero no puedo encontrar Resources.solutions: siento que me falta la directiva using. – Spedge

+3

Ah, ja, todo lo que tenía que hacer era agregar un Mi. al frente (es decir, My.Resources.solutions) Simples! – Spedge

+2

Agregar un recurso genera e incluye 'Properties \ Resources.Designer.cs' con' namespace YourProjectRootNamespace.Properties', por lo que debe usar 'YourProjectRootNamespace.Properties'. 'ProjectRootNamespace' se define en las propiedades de su proyecto en VisualStudio. – ilyaigpetrov

4

Sí, estás en lo correcto - crear un archivo de recursos. Cuando haces eso, no necesitas "cargar" la cadena, se hará referencia a ella como Resource.WhateverStringYouDefined.

33

En Visual Studio 2003, Visual Studio 2005 y posiblemente versiones anteriores (esto también funciona en 2008) puede incluir el archivo de texto en su proyecto, luego en el panel 'Propiedades', establezca la acción en 'Recurso integrado'. Luego puede acceder al archivo como una secuencia usando Assembly.GetManifestResourceStream(string).

Otras respuestas aquí son más convenientes. Incluyo esto para completar.

Tenga en cuenta que este método funcionará para incrustar otros tipos de archivos como imágenes, iconos, sonidos, etc ...

+6

Nota: utilice el espacio de nombre + nombre de archivo como parámetro para GetManifestResourceStream(), p. Ej. "MyNamespace.MyTextfile.txt". También puede llamar a GetManifestResourceNames() para obtener una lista de todos los nombres. – Stiefel

25

Después de incrustar un archivo de texto, utilizar ese archivo en cualquier lugar en el código como este ..

global::packageName.Properties.Resources.ThatFileName 
+1

Este es un enfoque mucho mejor porque generará un error de compilación si se elimina el recurso. También elimina errores tipográficos. Gracias por la publicacion. –

+0

+5. ¿Puedo escribirlo de nuevo en el archivo dentro del nivel de la DLL de C#? – Bhat

Cuestiones relacionadas