¿Cómo incrustar un archivo de texto en un ensamblado .NET?

Me gustaría incrustar un archivo de texto en un ensamblaje para que pueda cargar el texto sin tener que leerlo desde el disco, y para que todo lo que necesito esté incluido en el archivo ejecutable. (Para que sea más portátil)

¿Hay alguna forma de hacer esto? Supongo que algo con los archivos de recursos?

Y si puede, ¿cómo lo hace y cómo carga programáticamente el texto en una cadena?

Haga clic con el botón derecho en el archivo del proyecto, seleccione Propiedades.

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

enter image description here

Luego, desde la barra de herramientas sobre la página de tabs, seleccione agregar un nuevo archivo de texto, darle un nombre, se agregará a su proyecto y se abrirá.

Si llega hasta aquí, en su código puede escribir Resources.TheNameYouGaveTheTextFileHere y puede acceder a sus contenidos. 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 no estaba claro acerca de la descripción anterior, deje un comentario y lo editaré hasta que esté completo o tenga sentido 🙂

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 incrustado’. Luego puede acceder al archivo como una secuencia utilizando Assembly.GetManifestResourceStream(string) .

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

Tenga en cuenta que este enfoque funcionará para incrustar otros tipos de archivos, como imágenes, icons, sonidos, etc.

Después de insertar un archivo de texto, use ese archivo en cualquier lugar con un código como este …

 global::packageName.Properties.Resources.ThatFileName 

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

Aquí esta lo que hice:

  1. Agregué mis archivos (recursos) en Visual Studio haciendo clic derecho en el proyecto.
  2. Haga clic con el botón derecho en cada archivo que haya agregado y cambie el “Tipo de comstackción” a Recurso incrustado.
  3. Para acceder al recurso:

    a. Obtuve el ensamblado actual usando la función: GetExecutingAssembly()

    segundo. El recurso que agregué era un archivo de texto, así que lo leí en una secuencia usando GetManifestResourceStream(fileName) . La forma en que GetManifestResourceNames() a los nombres de los archivos es llamando a GetManifestResourceNames()

    do. Ahora usa una clase StreamReader() para leer hasta el final del archivo en una variable si eso es lo que quieres.

Añadiendo a la respuesta de Pavan, para obtener el ensamblaje actual (en la sección general):

 Assembly _assembly; 

GetManifestResourceStream (fileName) (en código, donde se requiere la lectura del recurso):

 try { _assembly = Assembly.GetExecutingAssembly(); _textStreamReader = new StreamReader(_assembly.GetManifestResourceStream("*Namespace*.*FileName*.txt")); } catch { Console.WritelLine("Error accessing resource!"); }