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

Voici ce que je voudrais faire:

Je veux créer un projet de bibliothèque qui contient mes fichiers de ressources (Ie, étiquettes D'interface utilisateur et autres joyaux). Je voudrais ensuite utiliser la bibliothèque de ressources à la fois dans mon INTERFACE et dans mes Tests. (C'est-à-dire, avoir fondamentalement une place commune pour mes ressources que je référence à 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 mon ressources fortement typées dans la bibliothèque à partir d'un autre projet (ie, mon interface utilisateur ou tests), sans sauter à travers des cerceaux (IE, quelque chose de similaire à ce qui est décrit ici, ou écrire une classe/fonction wrapper publique).

Malheureusement, ces deux solutions suppriment ma capacité à 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?

Je préfère éviter d'avoir pour utiliser un événement de construction pour y parvenir (c'est-à-dire, pour faire quelque chose comme remplacer toutes les instances de 'internal' par 'public', mais c'est essentiellement mon plan de repli si Je ne trouve pas de réponse..

22
demandé sur Peter Bernier 2008-09-26 21:51:15

3 réponses

Je ne sais pas quelle version de Visual Studio vous utilisez, donc je vais mettre des étapes pour l'une ou l'autre:

VS 2008-lorsque vous ouvrez le fichier resx dans design view, il y a une option en haut à côté D'ajouter une ressource et de supprimer une ressource, appelée access Modifier, c'est une liste déroulante où vous pouvez changer le code généré de interne à public.

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

37
répondu Dale Ragan 2008-09-26 18:11:00

Visual Studio 2008 vous permet de choisir si la classe de ressources générée doit être interne ou publique. Il y a aussi ResXFileCodeGeneratorEx , qui devrait le faire pour Visual Studio 2005.

2
répondu OregonGhost 2008-09-26 17:53:59

Dans le concepteur de jeu de données et avec la fenêtre Propriétés visible, il y a une propriété "Modifier". Pour vos jeux de données, il est probable que cela soit interne.

Je ne sais pas s'il existe un paramètre pour définir par défaut tous les nouveaux ensembles de données à public.

0
répondu Austin Salonen 2008-09-26 17:57:02