Partager via


Générer un projet qui dispose de ressources

Si vous générez les versions localisées d’un projet, tous les éléments de l’interface utilisateur doivent être séparés dans des fichiers de ressources correspondant aux différentes langues. Si le projet utilise uniquement des chaînes, les fichiers de ressources peuvent utiliser des fichiers texte. Vous pouvez également utiliser des fichiers .resx comme fichiers de ressources.

Compiler des ressources avec MSBuild

La bibliothèque de tâches courantes qui est fournie avec MSBuild inclut une tâche GenerateResource que vous pouvez utiliser pour compiler les ressources dans des fichiers .resx ou texte. Cette tâche inclut le paramètre Sources pour spécifier les fichiers de ressources à compiler et le paramètre OutputResources pour spécifier les noms des fichiers de ressources de sortie. Pour plus d’informations sur la tâche GenerateResource, consultez GenerateResource, tâche.

Attention

Les ressources dans les 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 en lequel vous avez confiance.

Pour compiler des ressources avec MSBuild

  1. Identifiez les fichiers de ressources du projet et transmettez-les à la tâche GenerateResource, en tant que listes d’éléments ou noms de fichiers.

  2. Spécifiez le paramètre OutputResources de la tâche GenerateResource, qui vous permet de définir les noms des fichiers de ressources de sortie.

  3. Utilisez l’élément Output de la tâche pour stocker la valeur du paramètre OutputResources dans un élément.

  4. Utilisez l’élément créé à partir de l’élément Output en tant qu’entrée d’une autre tâche.

Exemple 1

L’exemple de code suivant montre comment l’élément Output spécifie que l’attribut OutputResources de la tâche GenerateResource contient les fichiers de ressources compilés alpha.resources et beta.resources et que ces deux fichiers sont placés dans la liste d’éléments Resources. En identifiant ces fichiers .resources comme collection d’éléments du même nom, vous pouvez les utiliser facilement comme entrées d’une autre tâche, par exemple la tâche Csc.

Cette tâche revient à utiliser le commutateur /compiler pour Resgen.exe :

Resgen.exe /compile alpha.resx,alpha.resources /compile beta.txt,beta.resources

<GenerateResource
    Sources="alpha.resx; beta.txt"
    OutputResources="alpha.resources; beta.resources">
    <Output TaskParameter="OutputResources"
        ItemName="Resources"/>
</GenerateResource>

Exemple 2

L’exemple de projet suivant contient deux tâches : la tâche GenerateResource permet de compiler les ressources, et la tâche Csc permet de compiler les fichiers de code source et les fichiers de ressources compilés. Les fichiers de ressources compilés par la tâche GenerateResource sont stockés dans l’élément Resources et transmis à la tâche Csc.

<Project DefaultTargets = "Build"
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >

    <Target Name="Resources">
        <GenerateResource
            Sources="alpha.resx; beta.txt"
            OutputResources="alpha.resources; beta.resources">
            <Output TaskParameter="OutputResources"
                ItemName="Resources"/>
        </GenerateResource>
    </Target>

    <Target Name="Build" DependsOnTargets="Resources">
        <Csc Sources="hello.cs"
                Resources="@(Resources)"
                OutputAssembly="hello.exe"/>
    </Target>
</Project>