VB.NET : Memorizzare un file qualsiasi all'interno di un assembly
Il Framework .NET offre la possibilità di memorizzare, all'interno di un assembly, un qualunque tipo di file.
Per fare ciò è necessario:
1) importare il file all'interno del progetto utilizzando il menù Progetto\Aggiungi elemento esistente;
2) selezionare il file all'interno del solution explorer e selezionare il menù contestuale Proprietà;
3) modificare la proprietà Operazione di Generazione in Risorsa Incorporata;
A questo punto il file "viaggia" assieme all'assembly compilato.
Per recuperare a run-time il file è sufficiente utilizzare il seguente pezzo di codice:
.
.
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.
La chiamata del metodo GetManifestResourceStream()
può sollevare un'eccezione se il file supera la dimensione di 2GB.
Se il file non esiste all'interno dell'assembly o il nome del namespace è sbagliato, si ottiene un'eccezione nel momento in cui si effettua la chiamata al metodo GetManifestResourceStream()
.
Questa tecnica è utile se si vogliono memorizzare icone o immagini delle nostre applicazioni.
La seguente Function recupera un'icona memorizzata nell'assembly:
Private Shared Function GetResourceIcon(ByVal rootNamespace As String, _
ByVal iconName As String) As Icon
Dim icon As System.Drawing.Icon = Nothing
Dim asm As System.Reflection.Assembly = Nothing
Dim st As System.IO.Stream = Nothing
asm = Reflection.Assembly.GetExecutingAssembly
Try
st = asm.GetManifestResourceStream("WorkItemReminder." + iconName)
icon = New System.Drawing.Icon(st)
Catch ex As Exception
icon = Nothing
Finally
If Not st Is Nothing Then
st.Close()
End If
End Try
Return icon
End Function
Nessun commento:
Posta un commento