Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
30/08/08 18:43
klez91
Ciao ragazzi dopo un po di tempo ritorno ad aprire un nuovo topic x risolvere un piccolo problemuccio. Per dare l'idea sto realizzando un piccolo compilatore di Vb.Net in Vb.Net. Per compilare i sorgenti infatti utilizzo la classe Microsoft.VisualBasic.VBCodeProvider. Adesso, dopo essere stato alcuni giorni x capire il funzionamento della classe, sono in grado di compilare sia applicazioni console che windows form. La domanda che volgio porvi è come posso aggiungere ai programmi che vado a compilare delle risorse x poi richiamarle dall'applicazione stessa, una volta eseguita. Riassumendo:

1) Come genero un file di risorse partendo da un file qualsiasi;
2) Come lo "aggiungo" al sorgente che vado a compilare;
3) Alla fine come lo richiamo dall'applicazione compilata.

Ovviamente il tutto senza passare x VisualStudio.
Spero di essere stato chiaro nell'esporre il mio problema. Grazie per l'attenzione spero possiate aiutarmi. Ciao :k:
Ultima modifica effettuata da klez91 30/08/08 18:45
aaa
30/08/08 18:59
Il Totem
Non credo che per risorse tu intenda My.Resources, quindi guarda qui:
pierotofy.it/pages/extras/forum/16/40120-lettura_del_source_esternamente/
aaa
31/08/08 10:51
klez91
In realtà mi scuso se mi sono spiegato male ma mi riferivo proprio a quello. In pratica vorrei aggiungere un file( ad esempio un .txt, .bmp ecc. ecc.) x poi richiamarlo dalla mia applicazione che vado a compilare con il mio programma quindi senza passare x visual studio. Per questo avevo pensato di ispirarmi a visual studio che crea un file di risorse.resx con i file da me inseriti e lo aggiunge all'applicazione la quale a sua volta può accedere ai files attraverso My.Resources. Però come ho già detto prima non ho la minima idea di come creare un file.resx senza passare x visual studio, ne tantomeno di come richiamarlo dall'applicazione una volta compilata. Penso che sia questa la soluzione più semplice, ma se c'è ne una ancora più semplice ben venga. Spero di essere stato più chiaro questa volta, grazie, Ciao.
aaa
01/09/08 8:59
Il Totem
La soluzione più semplice è di copiarli nella cartella del programma e, nei sorgenti, riscrivere la classe MyResources in modo che carichi le risorse non direttamente dall'eseguibile, ma dai file grezzi che sono presenti.
aaa
01/09/08 18:17
klez91
Nooooo...era proprio quello che volevo evitare. Comunque nel frattempo sono ad un'ottimo punto cn quello che volevo fare. Infatti per generare un file di risorse (.resources e non .resx, mi sbagliavo) utilizzo la classe System.Resources.ResourceWriter, per aggiungerli all'eseguibile utilizzo la classe VBCodeProvider, e per richiamarlo a runtime la classe ResourceManager. Fin qui tutto ok, se nn fosse x il fatto che l'unico tipo di risorse che riesco ad aggiungere sono le immagini. Infatti la funzione "AddResource" della classe ResourceWriter, accetta come primo argomento una stringa che costituisce il nome x identificare la risorsa e come secondo argomento o una stringa ancora o un object o una matrice di byte. Adesso nel caso di un immagine al posto di object gli passo un System.Drawing.Image precedentemente dichiarato che fa riferimento ad esempio ad un immagine in locale, però come faccio a passargli come secondo argomento ad esempio un file audio o un file generico di cui conosco solo l'estensione ?

Edit----------------------------------------------
Non ho avuto il tempo di provare ma con un FileStream in modalità open e una matrice di byte da passare come secondo argomento alla funzione AddResource, otterrei lo stesso risultato ?
Ultima modifica effettuata da klez91 02/09/08 8:36
aaa
02/09/08 9:01
Il Totem
Secondo me sì. Infatti, ogni risorse che non sia un file di testo o un'immagine viene rappresentata da una matrice di bytes. Quindi, se come secondo argomento passi il contenuti in bytes di un qualsiasi stream, ottieni lo stesso risultato.

Vedi che anche senza di me si riesce benissimo? :rotfl:
aaa
02/09/08 17:50
klez91
Si infatti, passando la matrice di byte funziona, ovviamente durante l'esecuzione ho dovuto dichiarare un nuovo FileStream questa volta in modalità Create, per riscrivere dinuovo il file partendo dalla matrice di byte che c'era nella risorsa, ma nn ci sono stati problemi. Grazie mille comunque per l'interessamento, credo che a questo punto si potrebbe anche chiudere il topic.
Ciao :k: !!!
Ultima modifica effettuata da klez91 02/09/08 17:50
aaa
03/09/08 9:30
Il Totem
Ok, passo e chiudo.
aaa