25 maggio 2006

VB.NET: Memorizzare un file all'interno di un assembly.

Il Framework .NET offre la possibilità di memorizzare, all'interno di un assembly, un qualunque tipo di file (cablandolo all'interno dell'EXE o della DLL).
Per fare ciò è necessario:
1) importare il file all'interno del progetto utilizzando il menù Project\Add Existing Items;
2) selezionare il file all'interno del solution explorer e selezionare il menù contestuale properties;
3) modificare la proprietà Build Action in Embedded Resource;
4) utilizzare il seguente codice per caricare il contenuto del file all'interno di un array di byte:

.
.
Dim asm As System.Reflection.Assembly
Dim st As System.IO.Stream
Dim bytearray As Byte()
asm = Reflection.Assembly.GetExecutingAssembly
st = asm.GetManifestResourceStream("RootNamespace.file.ext")
ReDim bytearray(CInt(st.Length) - 1)
st.Read(bytearray, 0, CInt(st.Length))
st.Close()
.
.


RootNameSpace è il nome del namespace root dell'assembly mentre file.ext è il nome del file inserito nel progetto.
Fate attenzione perchè la chiamata del metodo GetManifestResourceStream può sollevare un'eccezione se il file supera la dimensione di 2GB.

Nessun commento: