none
Incorporare file di testo (o altre risorse) nel applicativo binary RRS feed

  • Domanda

  • Ho investito diverse ore cercando di risolvere questo problema ma non ne sono ancora venuto a capo.

    L'applicazione è semplicemente un lettore di file di testo (txt).

    Vorrei fare in modo che una volta compilato il codice, il file a cui siriferisce (TextFile1.txt) venisse incorporato nel file binary. Penso sia possibile visto che ad esempio le icone pur essendo file enrano a far parte dell'applicazione senza apparire separate dall exe.

    In questo modo sarebbe possibile distribuire l'applicativo senza correre il rischio che l'utente spostando il file TextFile1.txt si trovasse con un appliazione che non funziona.

    Ho settato le proprietà del file txt come segue:

    -"Non copiare"

    -"Risorsa incorporata"

    La posizione del file txt è nella root dell'applicativo.

    Il codice è il seguente:

     private void button1_Click(object sender, EventArgs e)
            {
              
                StreamReader strmrStreamReader;
                strmrStreamReader = new
                    StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream
                    ("read_from_resource_method.TextFile1.txt"));
                if (strmrStreamReader.Peek() != -1)
                strmrStreamReader.Close();
                strmrStreamReader = new StreamReader(Application.StartupPath + "\\TextFile1.txt");
                textBox1.Text = strmrStreamReader.ReadToEnd().ToString();
                strmrStreamReader.Close();
            }

     

    Qualcuno ha mai risolto questo problema?


    sabato 7 agosto 2010 05:37

Risposte

  • Ciao Millone,

    You wrote on 07/08/2010 :

    Qualcuno ha mai risolto questo problema?

    Quale è il problema?

    Io ho fatto questo:
    - ho creato un progetto nuovo in C# (Conaole Application);
    - ho aggiunto un file Resources.resx;
    - ho aperto l'editor del file Resources.resx;
    - ho creato su file system un file di testo (foo.txt) con un po' di testo dentro;
    - ho trascinato il file di testo nell'editor delle risorse;
    - ho scritto:

    class Program
    {
        static void Main( string[] args )
        {
     var f = Properties.Resources.foo;
     Console.WriteLine(f);
         Console.Read();
        }
    }

    e mi ritrovo in f il testo del file, senza che il file sia più presente.

    .m


    Mauro Servienti
    {C67C0157-5D98-4733-A75E-93CAEE4BADC8}
    Microsoft MVP - Visual C# / MCTS
    http://mvp.support.microsoft.com
    blog @ http://milestone.topics.it
    whynot [ at ] topics [ dot ] it
    domenica 8 agosto 2010 19:07
  • Ciao Millone,

    You wrote on 07/08/2010 :

    Qualcuno ha mai risolto questo problema?

    Quale è il problema?

    Io ho fatto questo:
    - ho creato un progetto nuovo in C# (Conaole Application);
    - ho aggiunto un file Resources.resx;
    - ho aperto l'editor del file Resources.resx;
    - ho creato su file system un file di testo (foo.txt) con un po' di testo dentro;
    - ho trascinato il file di testo nell'editor delle risorse;
    - ho scritto:

    class Program
    {
        static void Main( string[] args )
        {
     var f = Properties.Resources.foo;
     Console.WriteLine(f);
         Console.Read();
        }
    }

    e mi ritrovo in f il testo del file, senza che il file sia più presente.

    .m


    Mauro Servienti
    {C67C0157-5D98-4733-A75E-93CAEE4BADC8}
    Microsoft MVP - Visual C# / MCTS
    http://mvp.support.microsoft.com
    blog @ http://milestone.topics.it
    whynot [ at ] topics [ dot ] it


    Ciao,

    concordo ,ho eseguito credo la stessa cosa come descritta nei precedenti post, ho solo lavorato su windowsform,

    e sono riuscito a visualizzare il contenuto del file TextFile1.txt dentro il textbox.

    Spero comunque dopo tutto di aver capito il problema di Millone.

    Ciao.

    domenica 8 agosto 2010 19:41

Tutte le risposte

  • Aggiungi un Resource1.resx file, all'interno di questo fai Add resource e aggiungi un tipo Add new text file

    Saluti

     

    Massimo

    sabato 7 agosto 2010 13:45
  • Grazie, ma Resource.resx c'è già nel progetto. Perchè dovrei aggiungerne un altro?

    Comunque anche ad aggiungerlo come proponi tu, non è consentito dal programma l'aggiunta di files all'interno di Resource.resx o Resource1.resx.

    Almeno, a me non lo fa fare!!!

     

     

    sabato 7 agosto 2010 14:24
  • Grazie, ma Resource.resx c'è già nel progetto. Perchè dovrei aggiungerne un altro?

    Comunque anche ad aggiungerlo come proponi tu, non è consentito dal programma l'aggiunta di files all'interno di Resource.resx o Resource1.resx.

    Almeno, a me non lo fa fare!!!

     

     


    Ciao,

    se ho capito bene tu vuoi inserire il contenuto di un file txt all'interno del tuo file .resx?

    Ciao.

    sabato 7 agosto 2010 17:58
  • Grazie, ma Resource.resx c'è già nel progetto. Perchè dovrei aggiungerne un altro?

    Comunque anche ad aggiungerlo come proponi tu, non è consentito dal programma l'aggiunta di files all'interno di Resource.resx o Resource1.resx.

    Almeno, a me non lo fa fare!!!

     

     


    Ciao,

    se vuoi aggiungere un risorsa di file seleziona

    1 - Click con tasto desto del mouse

    2 - Proprieta'

    3 - Risorse

    4 - In alto a sinistra selezioni la voce Stringhe

    5 - Alla visualizzazione della casella a discesa selezioni file

    6 - trascinando il file all 'interno della pagina che ti si aprira' ammesso che tu lo abbia nel tuo progetto

         verra' memorizzato il percorso di riferimento  al file della tua applicazione.

     

    Altro modo sempre in risorse selezioni

    1 - Aggiungi Risorsa

    2 - Aggiungi nuovo file di testo

    3 - Ti comparira' una finestra di dialogo e dai un nome al tuo file aggiungere, click con il mouse su aggiungi.

    4 - Salva tutto , e in esplorasoluzioni sara' creata una cartella Resources con all'interno il file che hai creato in precedenza.

    5 - Seleziona il file all'interno della Cartella Resourcse /Proprieta' impostala su copia se piu' recente o Copia sempre.

     

    Per Visualizzare  il contenuto all'interno del TextBox puoi fare in questo modo

        private void button1_Click(object sender, EventArgs e)
        {
          StreamReader strmrStreamReader = new StreamReader(Application.StartupPath + "\\Resources\\TextFile1.txt");
          textBox1.Text = strmrStreamReader.ReadToEnd().ToString();
          strmrStreamReader.Close();
        }

    Ciao fai sapere .

     

     

     

    sabato 7 agosto 2010 18:24
  • Ciao,

    il primo metodo crea la cartella rsource e mi consente di metterci dentro il txt.

    Il problema è che il path non viene riconosiuto

    "\\Resources\\TextFile1.txt"
    )

    Il secondo metodo non crea la cartella Resources comunque ho lo stesso problema di path.

    Quello che vorrei ottenere è di non copiare il txt nella cartella dell'applicazione ma di averlo incluso nell'exe.

    Comunque grazie per l'aiuto

    ;)

     

    domenica 8 agosto 2010 15:54
  • Ciao,

    il primo metodo crea la cartella rsource e mi consente di metterci dentro il txt.

    Il problema è che il path non viene riconosiuto

    "\\Resources\\TextFile1.txt"
    
    )

    Il secondo metodo non crea la cartella Resources comunque ho lo stesso problema di path.

    Quello che vorrei ottenere è di non copiare il txt nella cartella dell'applicazione ma di averlo incluso nell'exe.

    Comunque grazie per l'aiuto

    ;)

     


    Ciao,

    capito, comunque hai impostato la proprieta' copia nella directory di output du TextFile1.txt su "copia se piu' recente" o "copia sempre"?.

    Comunque se aggiungi un file dentro Resource1.resx come le immagini o altro dovresti averlo disponibile anche quando lanci l'eseguibile.

    Ciao.

    domenica 8 agosto 2010 16:33
  • Ciao Carmelo,

    se imposti la proprietà copia, il txt verrrà copiato nel bin insieme all'exe e questo accederà al txt separato. Ho provato ed infatti rimuovendo il txt dal bin, l'applicativo va in errore.

    Hai ragione, dovrebbe essere disponibile, ma non lo è e non ne vengo a capo!!!!!!!

     

    Grazie

    Millone

     

    domenica 8 agosto 2010 16:46
  • Ciao Carmelo,

    se imposti la proprietà copia, il txt verrrà copiato nel bin insieme all'exe e questo accederà al txt separato. Ho provato ed infatti rimuovendo il txt dal bin, l'applicativo va in errore.

    Hai ragione, dovrebbe essere disponibile, ma non lo è e non ne vengo a capo!!!!!!!

     

    Grazie

    Millone

     

    Ciao,

    momento , se il file che tu immetti nelle risorse  lo elimini, non sara' piu' disponibile perche' quando inserisci

    un file all'interno delle risorse , viene effettuato un collegamento al file stesso, cancellandolo come tu hai detto,

    avrai un'errore perche' al momento in cui con l'applicativo esegui qualcosa su di esso non viene piu' trovato.

    Ora non so che uso devi farne, se per memorizzare qualcosa da rendere disponibile all'utente o altro.

    Ciao fai sapere.

    domenica 8 agosto 2010 18:31
  • Ciao Millone,

    You wrote on 07/08/2010 :

    Qualcuno ha mai risolto questo problema?

    Quale è il problema?

    Io ho fatto questo:
    - ho creato un progetto nuovo in C# (Conaole Application);
    - ho aggiunto un file Resources.resx;
    - ho aperto l'editor del file Resources.resx;
    - ho creato su file system un file di testo (foo.txt) con un po' di testo dentro;
    - ho trascinato il file di testo nell'editor delle risorse;
    - ho scritto:

    class Program
    {
        static void Main( string[] args )
        {
     var f = Properties.Resources.foo;
     Console.WriteLine(f);
         Console.Read();
        }
    }

    e mi ritrovo in f il testo del file, senza che il file sia più presente.

    .m


    Mauro Servienti
    {C67C0157-5D98-4733-A75E-93CAEE4BADC8}
    Microsoft MVP - Visual C# / MCTS
    http://mvp.support.microsoft.com
    blog @ http://milestone.topics.it
    whynot [ at ] topics [ dot ] it
    domenica 8 agosto 2010 19:07
  • Ciao Millone,

    You wrote on 07/08/2010 :

    Qualcuno ha mai risolto questo problema?

    Quale è il problema?

    Io ho fatto questo:
    - ho creato un progetto nuovo in C# (Conaole Application);
    - ho aggiunto un file Resources.resx;
    - ho aperto l'editor del file Resources.resx;
    - ho creato su file system un file di testo (foo.txt) con un po' di testo dentro;
    - ho trascinato il file di testo nell'editor delle risorse;
    - ho scritto:

    class Program
    {
        static void Main( string[] args )
        {
     var f = Properties.Resources.foo;
     Console.WriteLine(f);
         Console.Read();
        }
    }

    e mi ritrovo in f il testo del file, senza che il file sia più presente.

    .m


    Mauro Servienti
    {C67C0157-5D98-4733-A75E-93CAEE4BADC8}
    Microsoft MVP - Visual C# / MCTS
    http://mvp.support.microsoft.com
    blog @ http://milestone.topics.it
    whynot [ at ] topics [ dot ] it


    Ciao,

    concordo ,ho eseguito credo la stessa cosa come descritta nei precedenti post, ho solo lavorato su windowsform,

    e sono riuscito a visualizzare il contenuto del file TextFile1.txt dentro il textbox.

    Spero comunque dopo tutto di aver capito il problema di Millone.

    Ciao.

    domenica 8 agosto 2010 19:41