Есть ли способ сделать общедоступными файлы со строго типизированными ресурсами (в отличие от внутренних)? - PullRequest
22 голосов
/ 26 сентября 2008

Вот что я хотел бы сделать:

Я хочу создать проект библиотеки, который содержит мои файлы ресурсов (т. Е. Метки пользовательского интерфейса и еще много чего). Затем я хотел бы использовать библиотеку ресурсов как в своем пользовательском интерфейсе, так и в своих тестах. (То есть, в основном, у меня есть общие места для ресурсов, на которые я ссылаюсь из нескольких проектов.)

К сожалению, поскольку StronglyTypedResourceBuilder (класс .Net, который генерирует код для ресурсов) по умолчанию делает файлы ресурсов внутренними, я не могу ссылаться на мои строго типизированные ресурсы в библиотеке из другого проекта (т.е. мой пользовательский интерфейс или тесты) , без прыжков через обручи (то есть что-то похожее на то, что описано здесь , или написание класса / функции общедоступной оболочки).

К сожалению, оба этих решения лишают меня возможности строго ссылаться на ссылки.

Кто-нибудь нашел прямой способ создания строго типизированных ресурсов .Net, на которые можно ссылаться из нескольких проектов?

Я бы предпочел избегать использования события сборки для достижения этой цели (то есть сделать что-то вроде замены всех экземпляров «internal» на «public», но это, по сути, мой запасной план, если я могу не могу найти ответ ..

Ответы [ 3 ]

37 голосов
/ 26 сентября 2008

Не уверен, какую версию Visual Studio вы используете, поэтому я добавлю шаги для одной из них:

VS 2008 - Когда вы открываете файл resx в режиме конструктора, в верхней части окна «Добавить ресурс» и «Удалить ресурс» есть опция, называемая Access Modifier, это выпадающий список, где вы можете изменить сгенерированный код с внутреннего на общедоступный. .

VS 2005 - у вас нет возможности генерировать код, как в VS 2008. Это была функция, которая была добавлена ​​из-за этой головной боли. Хотя есть работа вокруг. Вы можете использовать сторонний генератор, такой как tool , или использовать атрибут InternalsVisibleTo в вашем AssemblyInfo.cs, чтобы добавить проекты, которые будут иметь доступ к внутренним классам вашей библиотеки ресурсов. .

2 голосов
/ 26 сентября 2008

Visual Studio 2008 позволяет выбрать, должен ли сгенерированный класс ресурсов быть внутренним или общедоступным. Существует также ResXFileCodeGeneratorEx , который должен делать это для Visual Studio 2005.

0 голосов
/ 26 сентября 2008

В конструкторе набора данных и с видимым окном свойств есть свойство «Модификатор». Для ваших наборов данных, это, скорее всего, говорит внутренний.

Я не знаю, есть ли настройка по умолчанию для всех новых наборов данных по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...