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

StackOverflow https://stackoverflow.com/questions/140937

Вопрос

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

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

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

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top