Opzioni del compilatore C# che specificano le risorse

Le opzioni seguenti controllano il modo in cui il compilatore C# crea o importa risorse Win32. La nuova sintassi di MSBuild viene visualizzata in grassetto. La sintassi di csc.exe precedente è illustrata in code style.

  • Win32Resource / -win32res: specifica un file di risorse Win32 (.res).
  • Win32Icon / -win32icon: fa riferimento ai metadati dal file o dai file di assembly specificati.
  • win32Manifest / -win32manifest: specifica un file manifesto Win32 (.xml).
  • NoWin32Manifest / -nowin32manifest: non include il manifesto Win32 predefinito.
  • Resources / -resource: incorpora la risorsa specificata (formato breve: /res).
  • LinkResources / -linkresources: collega la risorsa specificata a questo assembly.

Win32Resource

L'opzione Win32Resource inserisce una risorsa Win32 nel file di output.

<Win32Resource>filename</Win32Resource>

filename è il file di risorse da aggiungere al file di output. In una risorsa Win32 può essere contenute le informazioni sulla versione o sulla bitmap (icona) che consentono di identificare l'applicazione in Esplora file. Se non si specifica questa opzione, il compilatore genererà le informazioni sulla versione in base alla versione dell'assembly.

Win32Icon

Con l'opzione Win32Icon viene inserito un file con estensione ico nel file di output, che assume l'aspetto desiderato in Esplora file.

<Win32Icon>filename</Win32Icon>

filename è il file con estensione ico da aggiungere al file di output. Un file con estensione ico può essere creato mediante il Compilatore di risorse. Il Compilatore di risorse viene richiamato quando si compila un programma Visual C++. Viene creato un file .ico dal file .rc.

Win32Manifest

Usare l'opzione Win32Manifest per specificare un file manifesto dell'applicazione Win32 definito dall'utente da incorporare nel file PE (Portable Executable) di un progetto.

<Win32Manifest>filename</Win32Manifest>

filename è il nome e percorso del file manifesto personalizzato. Per impostazione predefinita, il compilatore C# incorpora un manifesto dell'applicazione che specifica il livello di esecuzione richiesto "asInvoker". Crea il manifesto nella stessa cartella in cui viene compilato l'eseguibile. Se si desidera fornire un manifesto personalizzato, ad esempio per specificare un livello di esecuzione richiesto "highestAvailable" o "requireAdministrator", utilizzare questa opzione per specificare il nome del file.

Nota

Questa opzione e l'opzione Win32Resources si escludono a vicenda. Se si tenta di usare entrambe le opzioni nella stessa riga di comando si otterrà un errore di compilazione.

Un'applicazione senza un manifesto che specifichi il livello di esecuzione richiesto è soggetta alla virtualizzazione dei file e del Registro di sistema con la funzionalità Controllo account utente in Windows. Per altre informazioni, vedere Controllo dell'account utente.

L'applicazione sarà sottoposta a virtualizzazione se una di queste condizioni è vera:

  • Si usa l'opzione NoWin32Manifest e non si specifica un manifesto in una fase successiva della compilazione o come parte di un file di risorse di Windows (.res) usando l'opzione Win32Resource.
  • Si fornisce un manifesto personalizzato che non specifica un livello di esecuzione richiesto.

Visual Studio crea un file .manifest predefinito e lo archivia nelle directory di debug e versione insieme al file eseguibile. Per aggiungere un manifesto personalizzato, crearne uno in qualsiasi editor di testo e quindi aggiungere il file al progetto. In alternativa, fare clic con il pulsante destro del mouse sull'icona Progetto in Esplora soluzioni, scegliere Aggiungi nuovo elemento e quindi selezionare File manifesto applicazione. Dopo aver aggiunto il file manifesto nuovo o esistente, il file verrà visualizzato nell'elenco a discesa Manifesto. Per altre informazioni, vedere Pagina Applicazione, Creazione progetti (C#).

È possibile inserire il manifesto dell'applicazione come fase personalizzata dopo la compilazione o come parte di un file di risorse Win32 usando l'opzione NoWin32Manifest. Usare la stessa opzione se si vuole che l'applicazione sia sottoposta alla virtualizzazione dei file o del Registro di sistema in Windows Vista.

NoWin32Manifest

Usare l'opzione NoWin32Manifest per indicare al compilatore di non incorporare un manifesto dell'applicazione nel file eseguibile.

<NoWin32Manifest />

Quando viene usata questa opzione, l'applicazione è soggetta a virtualizzazione in Windows Vista a meno che non venga specificato un manifesto dell'applicazione in un file di risorsa Win32 file o durante una istruzione di compilazione successiva.

In Visual Studio impostare l'opzione nella pagina delle proprietà dell'applicazione selezionando l'opzione Crea applicazione senza manifesto nell'elenco a discesa Manifesto. Per altre informazioni, vedere Pagina Applicazione, Creazione progetti (C#).

Risorse

Incorpora la risorsa specificata nel file di output.

<Resources Include=filename>
  <LogicalName>identifier</LogicalName>
  <Access>accessibility-modifier</Access>
</Resources>

filename è il file di risorse .NET da incorporare nel file di output. identifier (facoltativo) è il nome logico della risorsa, usato per caricare la risorsa stessa. L'impostazione predefinita corrisponde al nome del file. accessibility-modifier (facoltativo) indica l'accessibilità della risorsa, che può essere pubblica o privata. Il valore predefinito è public. Per impostazione predefinita, le risorse sono pubbliche nell'assembly quando vengono create tramite il compilatore C#. Per renderle private, specificare private come modificatore di accessibilità. Non è consentita alcuna accessibilità diversa da public o private. Se filename è un file di risorse .NET creato ad esempio da Resgen.exe oppure nell'ambiente di sviluppo, è possibile accedervi tramite i membri dello spazio dei nomi System.Resources. Per ulteriori informazioni, vedere System.Resources.ResourceManager. Per tutte le altre risorse, per accedere alla risorsa in fase di esecuzione usare i metodi GetManifestResource della classe Assembly. L'ordine delle risorse nel file di output è determinato dall'ordine specificato nel file di progetto.

LinkResources

Crea un collegamento a una risorsa di .NET nel file di output. Il file di risorse non viene aggiunto al file di output. L'opzione LinkResources è diversa dall'opzione Resource, che invece incorpora un file di risorse nel file di output.

<LinkResources Include=filename>
  <LogicalName>identifier</LogicalName>
  <Access>accessibility-modifier</Access>
</LinkResources>

filename è il file di risorse .NET a cui si vuole stabilire un collegamento dall'assembly. identifier (facoltativo) è il nome logico della risorsa, usato per caricare la risorsa stessa. L'impostazione predefinita corrisponde al nome del file. accessibility-modifier (facoltativo) indica l'accessibilità della risorsa, che può essere pubblica o privata. Il valore predefinito è public. Per impostazione predefinita, le risorse collegate sono pubbliche nell'assembly quando vengono create con il compilatore C#. Per renderle private, specificare private come modificatore di accessibilità. Non è consentito alcun modificatore diverso da public o private. Se filename è un file di risorse .NET creato ad esempio da Resgen.exe oppure nell'ambiente di sviluppo, è possibile accedervi tramite i membri dello spazio dei nomi System.Resources. Per ulteriori informazioni, vedere System.Resources.ResourceManager. Per tutte le altre risorse, per accedere alla risorsa in fase di esecuzione usare i metodi GetManifestResource della classe Assembly. Il file specificato in filename può avere qualsiasi formato. Può ad esempio risultare opportuno rendere una DLL nativa parte dell'assembly in modo che possa essere installata nella Global Assembly Cache e che sia possibile accedervi dal codice gestito nell'assembly. È possibile eseguire la stessa operazione in Assembly Linker. Per altre informazioni, vedere Al.exe (Assembly Linker) e Uso di assembly e della Global Assembly Cache.