GenerateResource (tâche)
Convertit les fichiers .txt
et .resx
(format de ressources XML) en fichiers .resources
binaires du Common Language Runtime qui peuvent être incorporés dans un exécutable binaire runtime ou compilés en assemblys satellites. Cette tâche est généralement utilisée pour convertir des fichiers .txt
ou .resx
en fichiers .resources
. La fonctionnalité de la tâche GenerateResource
est similaire à resgen.exe.
Attention
Les ressources dans les .resx
fichiers peuvent être sérialisées à l’aide BinaryFormatter
de ce qui n’est pas sécurisé. Incluez uniquement ces .resx
fichiers dans votre processus de génération que vous approuvez.
Paramètres
Le tableau ci-dessous décrit les paramètres de la tâche GenerateResource
.
Paramètre | Description |
---|---|
AdditionalInputs |
Paramètre ITaskItem[] facultatif.Contient des entrées supplémentaires pour la vérification des dépendances effectuée par cette tâche. Par exemple, les fichiers projet et cibles doivent généralement être des entrées, pour que toutes les ressources soient régénérées en cas de mise à jour. |
EnvironmentVariables |
Paramètre String[] facultatif.Spécifie un tableau de paires nom-valeur de variables d’environnement qui doivent être passées au fichier resgen.exe généré, en plus (ou en remplacement sélectif) du bloc d’environnement normal. |
ExcludedInputPaths |
Paramètre ITaskItem[] facultatif.Spécifie un tableau d’éléments qui indiquent les chemins à partir desquels les entrées suivies seront ignorées pendant la vérification de mise à jour. |
ExecuteAsTool |
Paramètre Boolean facultatif.Si la valeur est true , exécute tlbimp.exe et aximp.exe à partir du framework cible approprié out-of-process pour générer les assemblys de wrappers nécessaires. Ce paramètre autorise le multi-ciblage de ResolveComReferences . |
FilesWritten |
Paramètre de sortie ITaskItem[] facultatif.Contient les noms de tous les fichiers écrits sur disque. Cela comprend le fichier cache, le cas échéant. Ce paramètre est utile pour les implémentations de Clean. |
MinimalRebuildFromTracking |
Paramètre Boolean facultatif.Obtient ou définit un commutateur qui spécifie si la génération incrémentielle suivie sera utilisée. Si la valeur est true , la génération incrémentielle est activée ; sinon, une régénération est exécutée. |
NeverLockTypeAssemblies |
Paramètre Boolean facultatif.Récupère ou définit une valeur booléenne qui indique si un AppDomain doit être créé pour évaluer les fichiers de ressources (.resx) (True) ou si un AppDomain doit être créé uniquement quand les fichiers de ressources font référence à un assembly d’utilisateur (False). |
OutputResources |
Paramètre de sortie ITaskItem[] facultatif.Spécifie le nom des fichiers générés, comme les fichiers .resources . Si vous ne spécifiez pas de nom, le nom du fichier d’entrée correspondant est utilisé et le fichier .resources créé est placé dans le répertoire qui contient le fichier d’entrée. |
PublicClass |
Paramètre Boolean facultatif.Si la valeur est true , crée une classe de ressource fortement typée en tant que classe publique. |
References |
Paramètre String[] facultatif.Références à partir desquelles charger les types dans les fichiers .resx . Les éléments de données de fichiers .resx peuvent avoir un type .NET. Lors de la lecture du fichier .resx, ce type doit être résolu. En règle générale, on utilise pour cela des règles de chargement de type standard. Si vous fournissez des assemblys dans References , ils sont prioritaires.Ce paramètre n’est pas obligatoire pour les ressources fortement typées. |
SdkToolsPath |
Paramètre String facultatif.Spécifie le chemin des outils du SDK, comme resgen.exe. |
Sources |
Paramètre ITaskItem[] obligatoire.Spécifie les éléments à convertir. Les éléments passés à ce paramètre doivent avoir l’une des extensions de fichier suivantes : - .txt : spécifie l’extension d’un fichier texte à convertir. Les fichiers texte ne peuvent comporter que des ressources de chaîne.- .resx : spécifie l’extension d’un fichier de ressources XML à convertir. - .restext : spécifie le même format que .txt. Cette autre extension est utile si vous voulez distinguer clairement les fichiers sources qui contiennent des ressources d’autres fichiers sources dans votre processus de génération. - .resources : spécifie l’extension d’un fichier de ressources à convertir. |
StateFile |
Paramètre ITaskItem facultatif. Spécifie le chemin d’un fichier cache facultatif qui sert à accélérer la vérification des dépendances des liens dans les fichiers d’entrée .resx. |
StronglyTypedClassName |
Paramètre String facultatif.Spécifie le nom de classe pour la classe de ressources fortement typée. Si vous ne spécifiez pas ce paramètre, le nom de base du fichier de ressources est utilisé. |
StronglyTypedFilename |
Paramètre ITaskItem facultatif. Spécifie le nom du fichier source. Si vous ne spécifiez pas ce paramètre, le nom de la classe est utilisé comme nom de base, avec une extension qui dépend du langage. Par exemple : MyClass.cs. |
StronglyTypedLanguage |
Paramètre String facultatif.Spécifie le langage à utiliser lors de la génération de la source de classe pour la ressource fortement typée. Ce paramètre doit correspondre exactement à l’un des langages utilisés par CodeDomProvider. Par exemple, VB ou C# .En transmettant une valeur à ce paramètre, vous demandez à la tâche de générer des ressources fortement typées. |
StronglyTypedManifestPrefix |
Paramètre String facultatif.Spécifie le préfixe de manifeste ou d’espace de noms de ressources à utiliser dans la source de classe générée pour la ressource fortement typée. |
StronglyTypedNamespace |
Paramètre String facultatif.Spécifie l’espace de noms à utiliser pour la source de classe générée pour la ressource fortement typée. Si vous ne spécifiez pas ce paramètre, toutes les ressources fortement typées sont dans l’espace de noms global. |
TLogReadFiles |
Paramètre en lecture seule ITaskItem[] facultatif.Obtient un tableau des éléments qui représentent les journaux de suivi de lecture. |
TLogWriteFiles |
Paramètre en lecture seule ITaskItem[] facultatif.Obtient un tableau des éléments qui représentent les journaux de suivi d’écriture. |
ToolArchitecture |
Paramètre System.String facultatif. Utilisé pour déterminer si Tracker.exe doit être utilisé pour générer ResGen.exe. Doit être analysable pour un membre de l’énumération ExecutableType. Si String.Empty , utilise une heuristique pour déterminer une architecture par défaut. Doit être analysable pour un membre de l’énumération Microsoft.Build.Utilities.ExecutableType. |
TrackerFrameworkPath |
Paramètre String facultatif.Spécifie le chemin de l’emplacement .NET Framework approprié qui contient FileTracker.dll. Si vous définissez ce paramètre, il incombe à l’utilisateur de s’assurer que le nombre de bits du fichier FileTracker.dll qu’il transmet correspond au nombre de bits du fichier ResGen.exe qu’il a l’intention d’utiliser. Si vous ne spécifiez pas ce paramètre, la tâche choisit l’emplacement approprié en fonction de la version actuelle du .NET Framework. |
TrackerLogDirectory |
Paramètre String facultatif.Spécifie le répertoire intermédiaire dans lequel les journaux de suivi d’exécution de cette tâche seront placés. |
TrackerSdkPath |
Paramètre String facultatif.Spécifie le chemin de l’emplacement du SDK Windows approprié qui contient Tracker.exe. Si vous définissez ce paramètre, il incombe à l’utilisateur de s’assurer que le nombre de bits du fichier Tracker.exe qu’il transmet correspond au nombre de bits du fichier ResGen.exe qu’il a l’intention d’utiliser. Si vous ne spécifiez pas ce paramètre, la tâche choisit l’emplacement approprié en fonction du SDK Windows actuel. |
TrackFileAccess |
Paramètre Boolean facultatif. Si la valeur est true, le répertoire du fichier d’entrée est utilisé pour résoudre les chemins de fichiers relatifs. |
UsePreserializedResources |
Paramètre Boolean facultatif.Si la valeur est true , spécifie que les ressources non chaîne doivent être sérialisées à l’aide de PreserializedResourceWriter au lieu de ResourceWriter, ce qui n’est pas pris en charge sur .NET Core ou .NET 5 ou version ultérieure. |
UseSourcePath |
Paramètre Boolean facultatif.Si la valeur est true , indique que le répertoire du fichier d’entrée doit être utilisé pour résoudre les chemins de fichiers relatifs. |
Notes
Étant donné que les fichiers .resx
peuvent contenir des liens vers d’autres fichiers de ressources, il ne suffit pas de simplement comparer les horodatages des fichiers .resx
et .resources
pour savoir si les sorties sont à jour. Au lieu de cela, la tâche GenerateResource
suit les liens figurant dans les fichiers .resx
et vérifie aussi les horodatages des fichiers liés. Cela signifie qu’en général vous ne devez pas utiliser d’attributs Inputs
et Outputs
sur la cible contenant la tâche GenerateResource
, car elle risque dans ce cas d’être ignorée alors qu’elle doit être exécutée.
En plus des paramètres énumérés ci-dessus, cette tâche hérite des paramètres de la classe TaskExtension , qui elle-même hérite de la classe Task . Pour obtenir la liste de ces paramètres supplémentaires et leurs descriptions, consultez Classe de base TaskExtension.
Quand vous utilisez MSBuild 4.0 pour cibler des projets .NET 3.5, la génération peut échouer sur des ressources x86. Pour contourner ce problème, vous pouvez générer la cible en tant qu’assembly AnyCPU.
Le paramètre UsePreserializedResources
obtient sa valeur à partir de la propriété $(GenerateResourceUsePreserializedResources)
dans le processus de génération .NET normal. Cette propriété est définie sur true
par défaut dans les projets .NET Core et les projets qui utilisent .NET 5 ou version ultérieure. Vous pouvez définir $(GenerateResourceUsePreserializedResources)
sur true
pour autoriser le Kit SDK .NET à générer des projets ciblant .NET Framework 4.6.1 ou version ultérieure qui utilisent des ressources autres que des chaînes. L’assembly System.Resources.Extensions
doit être disponible au moment de l’exécution. Il est disponible dans .NET Core 3.0 et versions ultérieures et .NET 5 et versions ultérieures, et peut être utilisé dans .NET Framework 4.6.1 ou versions ultérieures via PackageReference.|
Exemple
L’exemple suivant utilise la tâche GenerateResource
pour générer des fichiers .resources
à partir des fichiers spécifiés par la collection d’éléments Resx
.
<GenerateResource
Sources="@(Resx)"
OutputResources="@(Resx->'$(IntermediateOutputPath)%(Identity).resources')">
<Output
TaskParameter="OutputResources"
ItemName="Resources"/>
</GenerateResource>
La tâche GenerateResource
utilise les métadonnées <LogicalName>
d’un élément <EmbeddedResource>
pour nommer la ressource incorporée dans un assembly.
En supposant que l’assembly se nomme myAssembly, le code suivant génère une ressource incorporée nommée someQualifier.someResource.resources
:
<ItemGroup>
<EmbeddedResource Include="myResource.resx">
<LogicalName>someQualifier.someResource.resources</LogicalName>
</EmbeddedResource>
</ItemGroup>
Sans les métadonnées <LogicalName>
, la ressource se nommerait myAssembly.myResource.resources
. Cet exemple s’applique uniquement au processus de génération Visual Basic et Visual C#.