Я хочу поместить некоторые метаданные во все файлы resx в решении. Является ли кажется, что это может быть достигнуто с помощью metadata
элемент включен во встроенном XSD для Resx файлов:Как добавить метаданные в файлы resx
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
Я не 100% уверен, что metadata
элемент должен быть использован для хранения произвольных метаданных, потому что я не смог найти любую документацию по ее назначению. Но он отлично работает, поскольку файлы resx редактируются с помощью текстового редактора.
Проблема возникает при редактировании файла resx в Visual Studio 2013. По умолчанию для открытия ресурса используется «Редактор управляемых ресурсов». К сожалению, редактор управляемых ресурсов не проводит различия между данными и метаданными. Это приводит к тому, что метаданные будут тихо изменены на данные о сохранении. Эта ошибка (или, возможно, намеренный дизайн) существует с at least 2010.
Мы также попытались добавить элементы Редактор управляемых ресурсов не узнал бы, но эти элементы были удалены при сохранении. То же самое произошло с комментариями XML. Такое поведение более понятно, но не оставляет нам много хороших вариантов.
Вот возможные решения я в курсе:
- мандата, что никто не может использовать редактор управляемых ресурсов. Это может быть хорошо, если бы это был только я, но я не могу требовать этого от всей команды. Редактор управляемых ресурсов слишком полезен.
- Требовать, чтобы все вручную исправляли метаданные после использования редактора управляемых ресурсов. Это слишком склонно к ошибкам и обременительно.
- Отправить вопрос команде Visual Studio. Мы будем делать это, но нам нужно решение, пока мы ждем, и нет никаких гарантий, что когда-нибудь придет исправить.
- Редактор управляемых ресурсов Fork, поэтому он ведет себя так, как мы хотим. Я не смог найти источник, и это, вероятно, имеет проблемы с лицензированием. Мы также не заинтересованы в поддержке вилки.
- Напишите собственную версию редактора управляемых ресурсов. Это похоже на описанный выше вариант, но это больше, чем для нашего прецедента.
- Просто сохраните метаданные в теге
data
. Это очевидный взлом.
Похоже, что неудача здесь заключается не в самих файлах resx, а в инструментах Visual Studio вокруг файлов resx. Тем не менее, мы не уходим из Visual Studio в ближайшее время. Есть ли какие-то решения, которые мне не хватает?