Aggiunta e modifica di risorse (Visual C#)
Aggiornamento: novembre 2007
Le applicazioni Visual C# spesso includono dati che non fanno parte del codice sorgente. Tali dati vengono indicati come risorse del progetto e possono comprendere dati binari, file di testo, file audio o video, tabelle di stringhe, icone, immagini, file XML o qualsiasi altro tipo di dati necessario per l'applicazione. I dati di risorsa del progetto vengono archiviati in formato XML nel file con estensione resx, denominato Resources.resx per impostazione predefinita, che può essere aperto in Esplora soluzioni. Per ulteriori informazioni sulle risorse del progetto, vedere Utilizzo di file di risorse.
Aggiunta di risorse ai progetti
Per aggiungere risorse a un progetto fare clic con il pulsante destro del mouse sul nodo Proprietà in Esplora soluzioni, scegliere Apri e quindi fare clic sul pulsante Aggiungi risorsa nella pagina Risorse in Progettazione progetti.
È possibile aggiungere risorse al progetto come risorse collegate, ovvero file esterni, o come risorse incorporate direttamente nel file con estensione resx.
Quando si aggiunge una risorsa collegata, nel file con estensione resx in cui sono archiviate le informazioni sulle risorse del progetto viene indicato soltanto un percorso relativo al file di risorse sul disco. Se si aggiungono immagini, video o altri file complessi come risorse collegate, è possibile modificarli tramite un editor predefinito associato al tipo di file in Progettazione risorse.
Quando si aggiunge una risorsa incorporata, i dati vengono archiviati direttamente nel file di risorse del progetto con estensione resx. Le stringhe possono essere archiviate esclusivamente come risorse incorporate.
Per ulteriori informazioni, vedere Risorse incorporate e collegate e Risorse in formato di file RESX.
Modifica delle risorse
Tramite Progettazione risorse è possibile aggiungere e modificare le risorse del progetto durante lo sviluppo associando un'applicazione predefinita per la modifica di ogni risorsa. È possibile accedere a Progettazione risorse facendo clic con il pulsante destro del mouse su Proprietà in Esplora soluzioni, scegliendo Apri e quindi facendo clic sulla scheda Risorse in Progettazione progetti. Per ulteriori informazioni, vedere Pagina Risorse, Progettazione progetti. Di seguito sono illustrate le opzioni del menu di Progettazione risorse:
Per modificare risorse incorporate, è necessario operare direttamente nel file con estensione resx e cambiare i singoli caratteri o byte. È quindi più comodo archiviare tipi di file complessi come risorse collegate durante la fase di sviluppo. È possibile utilizzare Editor binario per modificare i file di risorse, incluso il file con estensione resx, a livello binario in formato esadecimale o ASCII. È invece possibile utilizzare Editor di immagini per modificare icone e cursori, nonché i file con estensione jpeg e GIF archiviati come risorse collegate. Come editor di questi tipi di file è inoltre possibile scegliere altre applicazioni. Per ulteriori informazioni, vedere Visualizzazione e modifica di risorse in un editor di risorse.
Compilazione di risorse negli assembly
Quando si genera l'applicazione, viene richiamato lo strumento resgen.exe per convertire le risorse dell'applicazione in una classe interna denominata Resources. Questa classe è contenuta nel file Resources.Designer.cs nidificato nel file Resources.resx in Esplora soluzioni. La classe Resources incapsula tutte le risorse del progetto in proprietà get statiche in sola lettura allo scopo di fornire risorse fortemente tipizzate in fase di esecuzione. Quando si esegue la generazione tramite l'IDE di Visual C#, tutti i dati di risorsa incapsulati, incluse le risorse incorporate nel file con estensione resx e i file collegati, vengono compilati direttamente nell'assembly dell'applicazione, ovvero il file con estensione exe o dll. In altre parole, per l'IDE di Visual C# viene sempre utilizzata l'opzione /resource del compilatore. Se si esegue la generazione dalla riga di comando, è possibile specificare l'opzione /linkresource del compilatore che consente di distribuire risorse in un file distinto dall'assembly principale dell'applicazione. Si tratta di uno scenario avanzato, necessario solo in alcune situazioni rare. Uno scenario più comune per la distribuzione di risorse distinte dall'assembly principale dell'applicazione consiste nell'utilizzare gli assembly satellite, come descritto di seguito.
Accesso alle risorse in fase di esecuzione
Per accedere a una risorsa in fase di esecuzione, è sufficiente fare riferimento ad essa come si farebbe con ogni altro membro di classe. Nell'esempio riportato di seguito viene illustrato come recuperare una risorsa bitmap denominata Image01. Si noti che la classe Resources è inclusa in uno spazio dei nomi denominato <projectName>.Properties. È pertanto necessario utilizzare il nome completo per ogni risorsa oppure aggiungere la direttiva using appropriata nel file di origine da cui si sta accedendo alla classe Resources.
System.Drawing.Bitmap bitmap1 = myProject.Properties.Resources.Image01;
Internamente la proprietà get utilizza la classe ResourceManager per creare una nuova istanza dell'oggetto.
Per ulteriori informazioni, vedere Risorse nelle applicazioni e Generatore di file di risorse (Resgen.exe).
Risorse in assembly satellite
Se si creano applicazioni che verranno localizzate (tradotte) in più lingue, è possibile archiviare ogni insieme di stringhe specifiche delle impostazioni cultura come risorsa all'interno del relativo assembly satellite. Per la distribuzione dell'applicazione, si includerà l'assembly principale dell'applicazione e tutti gli assembly satellite appropriati. In seguito sarà possibile aggiungere assembly satellite supplementari o modificare quelli esistenti senza ripetere la compilazione dell'assembly principale dell'applicazione. Per ulteriori informazioni, vedere Creazione di assembly satellite e Individuazione e uso delle risorse per specifiche impostazioni cultura.
Vedere anche
Concetti
Introduzione a Progettazione progetti
Altre risorse
Guida introduttiva a Visual C#