Principale utente con più risposte
Incorporare file di testo (o altre risorse) nel applicativo binary

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?
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- Proposto come risposta Mila Daniel Ovidiu lunedì 9 agosto 2010 15:49
- Contrassegnato come risposta Mila Daniel Ovidiu lunedì 30 agosto 2010 09:38
-
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.
- Proposto come risposta Massimo Giambona martedì 17 agosto 2010 10:59
- Contrassegnato come risposta Mila Daniel Ovidiu lunedì 30 agosto 2010 09:38
Tutte le risposte
-
-
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!!!
-
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.
-
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 .
-
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,
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.
-
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 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.
-
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- Proposto come risposta Mila Daniel Ovidiu lunedì 9 agosto 2010 15:49
- Contrassegnato come risposta Mila Daniel Ovidiu lunedì 30 agosto 2010 09:38
-
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.
- Proposto come risposta Massimo Giambona martedì 17 agosto 2010 10:59
- Contrassegnato come risposta Mila Daniel Ovidiu lunedì 30 agosto 2010 09:38