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#.