Como incorporar um arquivo de texto em um assembly .NET?

Eu gostaria de incorporar um arquivo de texto em uma assembly para que eu possa carregar o texto sem ter que lê-lo do disco e para que tudo que eu preciso esteja contido no exe. (Então é mais portátil)

Existe uma maneira de fazer isso? Eu suponho algo com os arquivos de resources?

E se você puder, como você faz isso e como você programaticamente carrega o texto em uma string?

    Clique com o botão direito do mouse no arquivo de projeto e selecione Propriedades.

    Na janela que é aberta, vá para a guia Recursos e, se houver apenas um link azul no meio da página de guias, clique nele para criar um novo recurso.

    insira a descrição da imagem aqui

    Em seguida, na barra de ferramentas acima da guia, selecione para adicionar um novo arquivo de texto, dê um nome a ele, ele será adicionado ao seu projeto e aberto.

    Se você chegar até aqui, então no seu código você pode digitar Resources.TheNameYouGaveTheTextFileHere e você pode acessar seu conteúdo. Observe que na primeira vez que você usa a class Resources em uma class, você precisa adicionar uma diretiva using (pressione Ctrl +. Depois de digitar Resources para obter o menu para fazer com que o VS faça isso para você).

    Se algo não estiver claro sobre a descrição acima, por favor, deixe um comentário e eu vou editá-lo até que esteja completo ou faça sentido 🙂

    No Visual Studio 2003, no Visual Studio 2005 e possivelmente em versões anteriores (isso também funciona em 2008), você pode include o arquivo de texto em seu projeto e, em seguida, no painel ‘Propriedades’, defina a ação como ‘Recurso Incorporado’. Então você pode acessar o arquivo como um stream usando Assembly.GetManifestResourceStream(string) .

    Outras respostas aqui são mais convenientes. Eu incluo isso para completar.

    Observe que essa abordagem funcionará para incorporar outros tipos de arquivos, como imagens, icons, sons, etc …

    Depois de incorporar um arquivo de texto, use esse arquivo em qualquer lugar no código como este …

     global::packageName.Properties.Resources.ThatFileName 

    Sim, você está correto – crie um arquivo de recurso. Quando você fizer isso, você não precisará “carregar” a string, ela será referenciada como Resource.WhateverStringYouDefined.

    Aqui está o que eu fiz:

    1. Adicionado meus arquivos (resources) no Visual Studio clicando com o botão direito do mouse no projeto.
    2. Clique com o botão direito do mouse em todos os arquivos que você adicionou e altere o “Tipo de Construção” para Recurso Incorporado.
    3. Para acessar o recurso:

      uma. Obteve o assembly atual usando a function: GetExecutingAssembly()

      b. O recurso que eu adicionei foi um arquivo de texto, então eu li em um stream usando GetManifestResourceStream(fileName) . A maneira como eu GetManifestResourceNames() os nomes dos arquivos é chamando GetManifestResourceNames()

      c. Agora use uma class StreamReader() para ler até o final do arquivo em uma variável, se é isso que você deseja.

    Adicionando a resposta de Pavan, para obter a assembly atual (na seção geral):

     Assembly _assembly; 

    GetManifestResourceStream (fileName) (no código, onde a leitura do recurso é necessária):

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