Partage via


Tâche GenerateResource

Convertit les fichiers .txt et .resx (format de ressource XML) et les fichiers binaires common language runtime .resources qui peuvent être incorporés dans un exécutable binaire runtime ou compilés dans des assemblys satellites. Cette tâche est généralement utilisée pour convertir des fichiers .txt ou .resx en fichiers .resources. La tâche GenerateResource est fonctionnellement similaire à resgen.exe.

Prudence

Les ressources des fichiers .resx peuvent être sérialisées à l’aide de BinaryFormatter, ce qui n’est pas sécurisé. Incluez uniquement ces fichiers .resx dans votre processus de génération que vous approuvez.

Paramètres

Le tableau suivant décrit les paramètres de la tâche GenerateResource.

Paramètre Description
AdditionalInputs Paramètre ITaskItem[] facultatif.

Contient des entrées supplémentaires à la vérification des dépendances effectuée par cette tâche. Par exemple, les fichiers projet et cible doivent généralement être des entrées, de sorte que si elles sont mises à jour, toutes les ressources sont régénérées.
EnvironmentVariables Paramètre String[] facultatif.

Spécifie un tableau de paires nom-valeur de variables d’environnement qui doivent être passées au resgen.exegénéré, en plus (ou en remplaçant sélectivement) le bloc d’environnement normal.
ExcludedInputPaths Paramètre ITaskItem[] facultatif.

Spécifie un tableau d’éléments qui spécifient les chemins d’accès à partir desquels les entrées suivies seront ignorés pendant la vérification à jour.
ExecuteAsTool Paramètre Boolean facultatif.

Si true, exécute tlbimp.exe et aximp.exe à partir du framework cible approprié out-of-proc pour générer les assemblys wrapper nécessaires. Ce paramètre permet le ciblage multiple de ResolveComReferences.
FilesWritten Paramètre de sortie ITaskItem[] facultatif.

Contient les noms de tous les fichiers écrits sur disque, y compris le fichier de 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 build incrémentielle suivie sera utilisée. Si true, la build incrémentielle est activée ; sinon, une reconstruction sera forcée.
NeverLockTypeAssemblies Paramètre Boolean facultatif.

Obtient ou définit une valeur booléenne qui spécifie s’il faut créer une nouvelle AppDomain pour évaluer les fichiers de ressources (.resx) (true) ou pour créer une nouvelle AppDomain uniquement lorsque les fichiers de ressources font référence à l’assembly d’un utilisateur (false).
OutputResources Paramètre de sortie ITaskItem[] facultatif.

Spécifie le nom des fichiers générés, tels que 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 true, crée une classe de ressource fortement typée en tant que classe publique.
References Paramètre String[] facultatif.

Références pour charger des types dans des fichiers .resx à partir de. .resx éléments de données de fichier peuvent avoir un type .NET. Lorsque le fichier .resx est lu, ce type doit être résolu. En règle générale, elle est résolue avec succès à l’aide de 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 d’accès aux outils du Kit de développement logiciel (SDK), tels que 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 contenir 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 souhaitez 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’accès à un fichier de cache facultatif utilisé pour accélérer la vérification des dépendances des liens dans .resx fichiers d’entrée.
StronglyTypedClassName Paramètre String facultatif.

Spécifie le nom de classe de la classe de ressources fortement typée. Si ce paramètre n’est pas spécifié, le nom de base du fichier de ressources est utilisé.
StronglyTypedFilename Paramètre ITaskItem facultatif.

Spécifie le nom de fichier du fichier source. Si ce paramètre n’est pas spécifié, le nom de la classe est utilisé comme nom de fichier de base, avec l’extension dépendante de la langue. 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 passant 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 l’espace de noms de ressource ou le préfixe de manifeste à 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 ce paramètre n’est pas spécifié, toutes les ressources fortement typées se trouvent dans l’espace de noms global.
TLogReadFiles Paramètre facultatif ITaskItem[] en lecture seule.

Obtient un tableau d’éléments qui représentent les journaux de suivi en lecture.
TLogWriteFiles Paramètre facultatif ITaskItem[] en lecture seule.

Obtient un tableau d’éléments qui représentent les journaux de suivi d’écriture.
ToolArchitecture Paramètre System.String facultatif.

Permet de déterminer si Tracker.exe doit être utilisé pour générer ResGen.exe.

Doit être analysé par un membre de l’énumération ExecutableType. Si String.Empty, utilise une heuristique pour déterminer une architecture par défaut. Doit être analysé par un membre de l’énumération Microsoft.Build.Utilities.ExecutableType.
TrackerFrameworkPath Paramètre String facultatif.

Spécifie le chemin d’accès à l’emplacement .NET Framework approprié qui contient FileTracker.dll.

S’il est défini, l’utilisateur prend la responsabilité de s’assurer que le bit de l'FileTracker.dll qu’il passe correspond au bit de l'ResGen.exe qu’il a l’intention d’utiliser. Si elle n’est pas définie, la tâche décide de 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 de l’exécution de cette tâche seront placés.
TrackerSdkPath Paramètre String facultatif.

Spécifie le chemin d’accès à l’emplacement approprié du Kit de développement logiciel (SDK) Windows qui contient Tracker.exe.

S’il est défini, l’utilisateur prend la responsabilité de s’assurer que le bit de l'Tracker.exe qu’il passe correspond au bit de l'ResGen.exe qu’il a l’intention d’utiliser. Si elle n’est pas définie, la tâche décide de l’emplacement approprié en fonction du Kit de développement logiciel (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 d’accès relatifs aux fichiers.
UsePreserializedResources Paramètre Boolean facultatif.

Si true, spécifie que les ressources autres que chaînes doivent être sérialisées à l’aide de PreserializedResourceWriter au lieu de ResourceWriter, qui n’est pas prise en charge sur .NET Core ou .NET 5 ou version ultérieure.
UseSourcePath Paramètre Boolean facultatif.

Si true, spécifie que le répertoire du fichier d’entrée doit être utilisé pour résoudre les chemins d’accès relatifs aux fichiers.

Remarques

Étant donné que .resx fichiers peuvent contenir des liens vers d’autres fichiers de ressources, il n’est pas suffisant de comparer simplement .resx et .resources horodatages de fichiers pour voir si les sorties sont à jour. Au lieu de cela, la tâche GenerateResource suit les liens dans les fichiers .resx et vérifie également les horodatages des fichiers liés. Cela signifie que vous ne devez généralement pas utiliser Inputs et Outputs attributs sur la cible contenant la tâche GenerateResource, car cela peut entraîner l’exécution de celle-ci.

Outre les paramètres répertoriés ci-dessus, cette tâche hérite des paramètres de la classe TaskExtension, qui hérite elle-même de la classe Task. Pour obtenir la liste de ces paramètres supplémentaires et de leurs descriptions, consultez classe de base TaskExtension.

Lorsque vous utilisez MSBuild 4.0 pour cibler des projets .NET 3.5, la build peut échouer sur les 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 et projets .NET Core qui utilisent .NET 5 ou version ultérieure. Vous pouvez définir $(GenerateResourceUsePreserializedResources) sur true pour permettre au Kit de développement logiciel (SDK) .NET de générer des projets ciblant .NET Framework 4.6.1 ou version ultérieure qui utilisent des ressources non-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 version ultérieure 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 est nommé 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>
        <WithCulture>false</WithCulture>
    </EmbeddedResource>
</ItemGroup>

Sans les métadonnées <LogicalName>, la ressource est nommée myAssembly.myResource.resources. Cet exemple s’applique uniquement au processus de génération Visual Basic et Visual C#.

Voir aussi