Assembly: Embedded Resource elenco e lettura

Assembly: Embedded Resource elenco e lettura
Sviluppare in C# mi ha sempre portato ad utilizzare le Embedded Resource e devo dire che senza di loro la vita dello sviluppatore non sarebbe interessante come ora. Prima di mostrare il codice vediamo di rispondere ad una domanda importante:
cosa sono le Embedded Resource???
La risposta e’ molto semplice e si riassume nella seguente frase:
Le Embedded Resource sono delle risorse che al momento del build -tramite una definizione particolare- vengono “inglobate” nell’assembly e non copiate (di default) nella cartella di output.
Detta in questo modo sembra strano se non le hai mai utilizzate, ma una volta presa la confidenza necessaria non ci sara’ modo di tornare indietro.
csproj
Prima di tutto dobbiamo capire quali sono i file da “inglobare” e modificare il file csproj nel seguente modo:
|
|
|
|
Nella cartella EmbeddedResourceFiles creata nella root del progetto ho messo al suo interno una serie di file e quelli che desidero embeddare avranno la seguente sintassi all’interno del file csproj.
Tips: Se non avete voglia di fare questa modifica a mano, in Visual Studio vi bastera’ premere F4 sul file e vi si aprira’ una finestra. A questo punto dovrete cambiare la Build Action in Embedded resource
Tips: Per il codice proposto di seguito avrete la necessita’ di utilizzare i due seguenti using
|
|
Elenco risorse
Prima di utlizzare le risorse embeddate dobbiamo capire quali sono per potervi accedere tramite il nome.
|
|
Il GetEmbeddedResourceList appena visto vi permettera’ di ottenere tutta la lista delle risorse aggiunte come Embedded resource.
Tips: In linea di massima, il nome della singola risorsa avra’ la seguente struttura:
|
|
Semplice no?
StreamReader Resource
Dopo avere ottenuto il nome delle risorse, non resta che leggerla
|
|
In questo modo, avendo il resourceName possiamo accedere direttamente alla nostra risorsa prenderne lo StreamReader.
Ed ora? Ora che hai lo StreamReader a tua disposizione puoi divertirti come meglio credi.
Semplice, vero?