Leggere un file inserito come Risorsa Embedded

Una feature che stò iniziando ad usare parecchio sono le risorce embedded, cioè la capacita di inserire file all'interno dei nostri assembly e di poterli tranquillamente leggere.

Per inserire un file e renderlo disponibile come risorsa embedded non dobbiamo far altro che dal Solution Explorer di Visual Studio, aggiungere il file interessato e nelle proprietà dello stesso, alla voce Build Action, selezionare "Embedded Resource" ed il gioco è fatto.

Per leggere il file in questione, ecco una funzione, che grazie al namespace del file ci ritorna uno stringa con il contenuto del file.

/// 
/// Funzione di letttura delle risorse embedded
/// 

/// 
Nome della risorsa completo di tutto il NameSpace
/// 
Testo contenuto nella risorsa
private string GetFromResources(string resourceName)
{
    Assembly assem = 
this.GetType().Assembly;
    
using (Stream stream = assem.GetManifestResourceStream(resourceName))
    {
        
try
        
{
            
using (StreamReader reader = new StreamReader(stream))
            {
                
return reader.ReadToEnd();
            }
        }
        
catch (Exception e)
        {
            
throw new Exception("Error retrieving from Resources. Tried '"
                                     + resourceName + "'\r\n" + e.ToString());
        }
    }
}

Per leggere la nostra risorsa, esempio "Script.js" contenuta nel progetto "AndreaDottor.UI" nella cartella "Resources" ora non dobbiamo far altro che scrivere

string scriptResource = GetFromResources("AndreaDottor.UI.Resources.Script.js")

Un vantaggio di tutto questo, è anche la possibilità di accedervi facilmente tramite il namespace, quindi senza doversi più preoccupare di dove si sarebbero trovati determinati file (esempio Stylesheet, file di Javascript o quantaltro).

Fonte: http://www.codeproject.com/csharp/embeddedresourcestrings.asp

Print | posted on giovedì 29 giugno 2006 20:03