Options de compilateur C# qui spécifient les ressources

Les options suivantes contrôlent la façon dont le compilateur C# crée ou importe des ressources Win32. La nouvelle syntaxe MSBuild est affichée en gras. La syntaxe csc.exe plus ancienne est indiquée en code style.

  • Win32Resource / -win32res : spécifiez un fichier de ressources Win32 (.res).
  • Win32Icon / -win32icon : référencez les métadonnées du fichier ou des fichiers d’assembly spécifiés.
  • Win32Manifest / -win32manifest : spécifiez un fichier manifeste Win32 (.xml).
  • NoWin32Manifest / -nowin32manifest : n’incluez pas le manifeste Win32 par défaut.
  • Ressources / -resource : incorporez la ressource spécifiée (forme abrégée : /res).
  • LinkResources / -linkresources : liez la ressource spécifiée à cet assembly.

Win32Resource

L’option Win32Resource insère une ressource Win32 dans le fichier de sortie.

<Win32Resource>filename</Win32Resource>

filename est le fichier de ressources que vous voulez ajouter à votre fichier de sortie. Une ressource Win32 peut contenir des informations sur la version ou le fichier bitmap (icône) qui permettent d’identifier votre application dans l’Explorateur de fichiers. Si vous ne spécifiez pas cette option, le compilateur génère des informations de version en fonction de la version de l’assembly.

Win32Icon

L’option Win32Icon insère un fichier .ico dans le fichier de sortie, ce qui lui donne l’apparence souhaitée dans l’Explorateur de fichiers.

<Win32Icon>filename</Win32Icon>

filename est le fichier .ico que vous voulez ajouter à votre fichier de sortie. Un fichier .ico peut être créé avec le compilateur de ressources. Le compilateur de ressources est appelé quand vous compilez un programme Visual C++ ; un fichier .ico est alors créé à partir du fichier .rc.

Win32Manifest

Utilisez l’option Win32Manifest pour spécifier un fichier manifeste d’application Win32 défini par l’utilisateur à incorporer dans le fichier exécutable portable (PE) d’un projet.

<Win32Manifest>filename</Win32Manifest>

filename est le nom et l’emplacement du fichier manifeste personnalisé. Par défaut, le compilateur C# incorpore un manifeste d’application qui spécifie le niveau d’exécution demandé « asInvoker ». Il crée le manifeste dans le même dossier que celui dans lequel l’exécutable est généré. Pour fournir un manifeste personnalisé, par exemple pour spécifier le niveau d’exécution requis « highestAvailable » ou « requireAdministrator », utilisez cette option pour indiquer le nom du fichier.

Notes

Cette option et l’option Win32Resources s’excluent mutuellement. Si vous tentez d’utiliser ces deux options dans la même ligne de commande, une erreur de build se produira.

Une application sans manifeste d’application pour spécifier le niveau d’exécution demandé est soumise à une virtualisation des fichiers et des registres sous la fonctionnalité Contrôle de compte d’utilisateur de Windows. Pour plus d’informations, consultez Contrôle de compte d’utilisateur.

Votre application sera soumise à la virtualisation si l’une de ces conditions est vérifiée :

  • Vous utilisez l’option NoWin32Manifest sans fournir de manifeste au cours d’une étape de génération ultérieure ou en tant que partie du fichier de ressources Windows (.res) à l’aide de l’option Win32Resource.
  • Vous fournissez un manifeste personnalisé qui ne spécifie pas de niveau d’exécution demandé.

Visual Studio crée un fichier .manifest par défaut et le stocke dans les répertoires de débogage et de mise en production avec le fichier exécutable. Vous pouvez ajouter un manifeste personnalisé en en créant un dans un éditeur de texte et en ajoutant le fichier au projet. Vous pouvez également cliquer avec le bouton droit sur l’icône Projet dans Explorateur de solutions, sélectionner Ajouter un nouvel élément, puis sélectionner Fichier manifeste de l’application . Une fois que vous avez ajouté votre fichier manifeste nouveau ou existant, il apparaît dans la liste déroulante Manifeste. Pour plus d’informations, consultez Page Application, Concepteur de projets (C#).

Vous pouvez fournir le manifeste de l’application en tant qu’étape après génération personnalisée ou en tant que partie d’un fichier de ressources Win32 à l’aide de l’option NoWin32Manifest. Utilisez cette même option pour que votre application soit soumise à la virtualisation des fichiers ou des registres dans Windows Vista.

NoWin32Manifest

Utilisez l’option NoWin32Manifest pour indiquer au compilateur de ne pas incorporer le manifeste de l’application dans le fichier exécutable.

<NoWin32Manifest />

Quand cette option est utilisée, l’application est soumise à la virtualisation sur Windows Vista, sauf si vous fournissez un manifeste de l’application dans un fichier de ressources Win32 ou au cours d’une étape de génération ultérieure.

Dans Visual Studio, définissez cette option dans la page de propriétés Application en sélectionnant l’option Créer une application sans fichier manifeste dans la zone de liste déroulante Manifeste. Pour plus d’informations, consultez Page Application, Concepteur de projets (C#).

Ressources

Incorpore la ressource spécifiée dans le fichier de sortie.

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

filename est le fichier de ressources .NET que vous voulez incorporer dans le fichier de sortie. identifier (facultatif) est le nom logique de la ressource. Il s’agit du nom utilisé pour charger la ressource. La valeur par défaut est le nom du fichier. accessibility-modifier (facultatif) est l’accessibilité de la ressource : publique ou privée. La valeur par défaut est public. Par défaut, les ressources sont publiques dans l’assembly quand elles sont créées à l’aide du compilateur C#. Pour rendre les ressources privées, spécifiez le modificateur d’accessibilité private. Aucune accessibilité autre public ou private n’est autorisée. Si filename est un fichier de ressources .NET créé, par exemple, par Resgen.exe ou dans l’environnement de développement, il est possible d’y accéder à l’aide des membres de l’espace de noms System.Resources. Pour plus d’informations, consultez System.Resources.ResourceManager. Pour toutes les autres ressources, utilisez les méthodes GetManifestResource dans la classe Assembly pour accéder à la ressource au moment de l’exécution. L’ordre des ressources dans le fichier de sortie est déterminé par l’ordre spécifié dans le fichier projet.

LinkResources

Crée un lien vers une ressource .NET dans le fichier de sortie. Le fichier de ressources n’est pas ajouté au fichier de sortie. LinkResources diffère de l’option Ressource qui incorpore un fichier de ressources dans le fichier de sortie.

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

filename est le fichier de ressources .NET que vous voulez lier à partir de l’assembly. identifier (facultatif) est le nom logique de la ressource. Il s’agit du nom utilisé pour charger la ressource. La valeur par défaut est le nom du fichier. accessibility-modifier (facultatif) est l’accessibilité de la ressource : publique ou privée. La valeur par défaut est public. Par défaut, les ressources liées sont publiques dans l’assembly quand elles sont créées avec le compilateur C#. Pour rendre les ressources privées, spécifiez le modificateur d’accessibilité private. Aucun autre modificateur que public ou private n’est autorisé. Si filename est un fichier de ressources .NET créé, par exemple, par Resgen.exe ou dans l’environnement de développement, il est possible d’y accéder à l’aide des membres de l’espace de noms System.Resources. Pour plus d’informations, consultez System.Resources.ResourceManager. Pour toutes les autres ressources, utilisez les méthodes GetManifestResource dans la classe Assembly pour accéder à la ressource au moment de l’exécution. Le fichier spécifié dans filename peut avoir n’importe quel format. C’est le cas, par exemple, si vous voulez qu’une DLL native fasse partie de l'assembly pour qu’elle puisse être installée dans le Global Assembly Cache et accessible à partir du code managé dans l'assembly. Vous pouvez effectuer la même opération dans Assembly Linker. Pour plus d’informations, consultez Al.exe (Assembly Linker) et Utilisation d’assemblys et du Global Assembly Cache.