Cosa sono le risorse VB.Net e come vengono utilizzate?

Dopo che gli studenti di Visual Basic hanno imparato tutto sui cicli, le istruzioni condizionali e le subroutine, una delle cose successive che spesso chiedono è: "Come faccio ad aggiungere una bitmap, un file .wav, un cursore personalizzato o qualche altro effetto speciale?" Una risposta sono i file di risorse. Quando aggiungi un file di risorse al tuo progetto, viene integrato per la massima velocità di esecuzione e il minimo fastidio durante la creazione di pacchetti e la distribuzione dell'applicazione.

L'utilizzo di file di risorse non è l'unico modo per includere file in un progetto VB, ma presenta vantaggi reali. Ad esempio, è possibile includere una bitmap in un controllo PictureBox o utilizzare l'API Win32 mciSendString. 

Microsoft definisce una risorsa come "qualsiasi dato non eseguibile distribuito logicamente con un'applicazione".

Il modo più semplice per gestire i file di risorse nel progetto è selezionare la scheda Risorse nelle proprietà del progetto. Puoi visualizzarlo facendo doppio clic su Il mio progetto in Esplora soluzioni o nelle proprietà del progetto sotto la voce di menu Progetto.

Tipi di file di risorse

  • Stringhe
  • Immagini 
  • icone
  • audio
  • File
  • Altro

I file di risorse semplificano la globalizzazione

L'utilizzo dei file di risorse aggiunge un altro vantaggio: una migliore globalizzazione. Le risorse sono normalmente incluse nell'assembly principale, ma .NET consente anche di creare pacchetti di risorse in assembly satellite. In questo modo, si ottiene una migliore globalizzazione perché si includono solo gli assembly satellite necessari. Microsoft ha fornito un codice a ogni dialetto della lingua. Ad esempio, il dialetto americano dell'inglese è indicato dalla stringa "en-US" e il dialetto svizzero del francese è indicato da "fr-CH". Questi codici identificano gli assembly satellite che contengono file di risorse specifici delle impostazioni cultura. Quando un'applicazione viene eseguita, Windows usa automaticamente le risorse contenute nell'assembly satellite con la cultura determinata dalle impostazioni di Windows.

VB.Net Aggiungi file di risorse

Poiché le risorse sono una proprietà della soluzione in VB.Net, vi si accede proprio come le altre proprietà: per nome utilizzando l'oggetto My.Resources. Per illustrare, esamina questa applicazione progettata per visualizzare le icone per i quattro elementi di Aristotele: aria, terra, fuoco e acqua.

Innanzitutto, devi aggiungere le icone. Seleziona la scheda Risorse dalle proprietà del progetto. Aggiungi icone scegliendo Aggiungi file esistente dal menu a discesa Aggiungi risorse. Dopo aver aggiunto una risorsa, il nuovo codice avrà il seguente aspetto:

Private Sub RadioButton1_CheckedChanged (...
Gestisce MyBase.Load
Button1.Image = My.Resources.EARTH.ToBitmap
Button1.Text = "Earth"
End Sub

Incorporamento con Visual Studio

Se usi Visual Studio, puoi incorporare risorse direttamente nell'assembly del progetto. Questi passaggi aggiungono un'immagine direttamente al tuo progetto:

  • Fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni. Fare clic su Aggiungi e quindi su Aggiungi elemento esistente.
  • Individua il tuo file immagine e fai clic su Apri.
  • Visualizza le proprietà dell'immagine appena aggiunta.
  • Impostare la proprietà Build Action su Embedded Resource.

È quindi possibile utilizzare la bitmap direttamente nel codice come questo (dove la bitmap era la terza, numero di indice 2 nell'assembly).

Dim res () As String = GetType (Form1) .Assembly.GetManifestResourceNames ()
PictureBox1.Image = Nuovo System.Drawing.Bitmap (_
GetType (Form1) .Assembly.GetManifestResourceStream (res (2)))

Sebbene queste risorse siano incorporate come dati binari direttamente nell'assembly principale o nei file di assembly satellite, quando si compila il progetto in Visual Studio, vengono referenziati da un formato di file basato su XML che usa l'estensione .resx. Ad esempio, ecco uno snippet del file .resx che hai appena creato:

<assembly alias="System.Windows.Forms" name="System.Windows.Forms,
Versione = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089 "/>
<data name="AIR"
type = "System.Resources.ResXFileRef,
System.Windows.Forms ">
.. Resources CLOUD.ICO; System.Drawing.Icon,
System.Drawing, versione = 2.0.0.0,
Cultura = neutra,
PublicKeyToken=b03f5f7f11d50a3a</value>

Poiché sono solo file XML di testo, un file .resx non può essere utilizzato direttamente da un'applicazione .NET Framework. Deve essere convertito in un file binario ".resources", aggiungendolo all'applicazione. Questo lavoro viene eseguito da un programma di utilità denominato Resgen.exe. Potrebbe essere necessario eseguire questa operazione per creare gli assembly satellite per la globalizzazione. Devi eseguire resgen.exe da un prompt dei comandi.

Fonte

"Panoramica delle risorse". Microsoft, 2015.