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

Voici ce que j’aimerais faire:

Je veux 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, comme 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 faire référence à mes ressources fortement typées dans la bibliothèque à partir d’un autre projet (c’est-à-dire mon interface utilisateur ou mes tests), sans sauter par des cercles (par exemple, quelque chose de similaire à ce qui est décrit ici , ou en écrivant une classe / fonction de wrapper publique).

Malheureusement, ces deux solutions me privent de la capacité de garder les références fortement typées.

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

Pour ce faire, je préférerais éviter de recourir à un événement de compilation (c’est-à-dire remplacer quelque chose comme «interne» par «public», mais c’est mon plan de repli si je ne trouve pas une réponse..

Vous ne savez pas quelle version de Visual Studio vous utilisez, je vais donc décrire les étapes suivantes:

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é de interne à public.

VS 2005 – Vous n’avez pas l’option 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 tel que cet outil ou utiliser l’atsortingbut InternalsVisibleTo dans votre AssemblyInfo.cs pour append les projets qui auront access aux classes internes de votre bibliothèque de ressources.

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 , qui devrait le faire pour Visual Studio 2005.

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

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