Подтвердить что ты не робот

Есть ли способ сделать файлы с жестким типизированным ресурсом общедоступными (в отличие от внутренних)?

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

Из конструктора набора данных и видимого окна свойств существует свойство "Модификатор". Для ваших наборов данных это, скорее всего, говорит о внутреннем.

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