Есть ли способ сделать файлы с жестким типизированным ресурсом общедоступными (в отличие от внутренних)?
Вот что я хотел бы сделать:
Я хочу создать проект библиотеки, содержащий мои файлы ресурсов (например, ярлыки пользовательского интерфейса и многое другое). Я бы хотел использовать библиотеку ресурсов как в своем пользовательском интерфейсе, так и в моих тестах. (Т.е., в основном имеют общее место для моих ресурсов, которые я ссылаюсь на несколько проектов.)
К сожалению, поскольку StronglyTypedResourceBuilder (класс .Net, который генерирует код для ресурсов) делает внутренние файлы ресурсов по умолчанию, я не могу ссылаться на свои строго типизированные ресурсы в библиотеке из другого проекта (например, мой пользовательский интерфейс или тесты), не перескакивая через обручи (т.е. что-то похожее на то, что описано здесь, или написание общедоступного класса/функции оболочки).
К сожалению, оба этих решения устраняют мою способность сохранять ссылки строго типизированными.
Кто-нибудь нашел прямой способ создания сильно типизированных ресурсов .Net, на которые можно ссылаться из нескольких проектов?
Я бы предпочел избегать использования события сборки для выполнения этого (т.е. сделать что-то вроде замены всех экземпляров "внутреннего" на "public", но в основном мой пассивный план, если я могу не найдешь ответа.
Ответы
Ответ 1
Не знаете, какую версию Visual Studio вы используете, поэтому я поставлю шаги для одного:
VS 2008 - Когда вы открываете файл resx в представлении дизайна, в верхней части рядом с надписью "Добавить ресурс" и "Удалить ресурс" есть опция "Модификатор доступа", это означает, что вы можете изменить сгенерированный код из внутреннего в открытый.
VS 2005 - У вас нет возможности генерировать код, как в VS 2008. Это была функция, которая была добавлена из-за этой головной боли. Однако есть работа. Вы можете использовать сторонний генератор, такой как инструмент, или вы можете использовать InternalsVisibleTo в вашем AssemblyInfo.cs, чтобы добавить проекты, которые будут иметь доступ к внутренним классам вашей библиотеки ресурсов.
Ответ 2
Visual Studio 2008 позволяет выбрать, должен ли генерируемый класс ресурсов быть внутренним или общедоступным. Существует также ResXFileCodeGeneratorEx, который должен сделать это для Visual Studio 2005.
Ответ 3
Из конструктора набора данных и видимого окна свойств существует свойство "Модификатор". Для ваших наборов данных это, скорее всего, говорит о внутреннем.
Я не знаю, есть ли параметр по умолчанию для всех новых наборов данных для публики.