Existe-t-il un moyen de rendre publics les fichiers de ressources fortement typées (par opposition aux fichiers internes)?

StackOverflow https://stackoverflow.com/questions/140937

Question

Voici ce que j'aimerais faire:

Je souhaite créer un projet de bibliothèque contenant mes fichiers de ressources (c'est-à-dire les étiquettes d'interface utilisateur, etc.). J'aimerais ensuite utiliser la bibliothèque de ressources à la fois dans mon interface utilisateur et dans mes tests. (Par exemple, mes ressources sont référencées à partir de plusieurs projets.)

Malheureusement, parce que StronglyTypedResourceBuilder (la classe .Net qui génère le code pour les ressources) rend les fichiers de ressources internes par défaut, je ne peux pas référencer mes ressources fortement typées dans la bibliothèque à partir d'un autre projet (c'est-à-dire mon interface utilisateur ou mes tests). , sans passer par des obstacles (c’est-à-dire quelque chose de similaire à ce qui est décrit ici , ou écrire une classe / fonction wrapper publique).

Malheureusement, ces deux solutions m'empêchent de conserver les références fortement typées.

Quelqu'un at-il trouvé un moyen simple de créer des ressources .Net fortement typées pouvant être référencées à partir de plusieurs projets?

Je préférerais éviter de devoir utiliser un événement de compilation afin de réaliser cela (c’est-à-dire, faire quelque chose comme remplacer toutes les occurrences de "interne" par "public", mais c’est fondamentalement mon plan de secours si je peux. ne trouvez pas de réponse ..

Était-ce utile?

La solution

Vous ne savez pas quelle version de Visual Studio vous utilisez, je vais donc définir des étapes pour l'une ou l'autre:

VS 2008 - Lorsque vous ouvrez le fichier resx en mode Création, une option en haut, à côté de Ajouter une ressource et Supprimer une ressource, appelée Access Modifier, est une liste déroulante dans laquelle vous pouvez modifier le code généré en interne en public. .

VS 2005 - Vous n’avez pas la possibilité de générer le code comme dans VS 2008. C’est une fonctionnalité qui a été ajoutée à cause de ce mal de tête. Il y a des travaux autour cependant. Vous pouvez utiliser un générateur tiers comme celui-ci outil ou vous pouvez utiliser l'attribut InternalsVisibleTo dans votre AssemblyInfo .cs pour ajouter les projets qui auront accès aux classes internes de votre bibliothèque de ressources.

Autres conseils

Visual Studio 2008 vous permet de choisir si la classe de ressources générée doit être interne ou publique. Il existe également le ResXFileCodeGeneratorEx , ce qui devrait être fait pour Visual Studio 2005.

Dans le concepteur de jeu de données et avec la fenêtre de propriétés visible, il existe un "Modificateur". propriété. Pour vos ensembles de données, il est probablement dit interne.

Je ne sais pas s'il existe un paramètre permettant de rendre public tous les nouveaux jeux de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top