Есть xml-документ "sample.xml".
Есть его схема "sample.xsd".
С помощью xml-схемы делается валидация документа.
В данный момент "sample.xsd" — это файл на диске. Т.е. любой пользователь может его редактировать.
Можно ли как-то вшить xsd в проект, чтобы править его можно было только из Visual Studio?
Или придется программно создавать XmlSchema result = new XmlSchema(); .... создавать его элементы ..., как это показано в http://rsdn.ru/forum/dotnet/2960976.aspx
Здравствуйте, cubes_and_tubes, Вы писали:
__>В данный момент "sample.xsd" — это файл на диске. Т.е. любой пользователь может его редактировать. __>Можно ли как-то вшить xsd в проект, чтобы править его можно было только из Visual Studio?
Здравствуйте, cubes_and_tubes, Вы писали:
__>Есть xml-документ "sample.xml". __>Есть его схема "sample.xsd". __>С помощью xml-схемы делается валидация документа. __>В данный момент "sample.xsd" — это файл на диске. Т.е. любой пользователь может его редактировать. __>Можно ли как-то вшить xsd в проект, чтобы править его можно было только из Visual Studio? __>Или придется программно создавать XmlSchema result = new XmlSchema(); .... создавать его элементы ..., как это показано в http://rsdn.ru/forum/dotnet/2960976.aspx
Я обычно в свойствах файла (в студии) так же выставляю Build Action = Embedded Resource + открываю в свойствах проекта вкладку Resources, создаю там (если ещё не создан) "default resource file" и перетяниваю просто "файл" из Solution Explorer в редактор ресурсов. Теперь из кода есть удобный способ обращения к содержимому файла без явного хардкодинга констант.
Help will always be given at Hogwarts to those who ask for it.
Здравствуйте, _FRED_, Вы писали:
_FR>Я обычно в свойствах файла (в студии) так же выставляю Build Action = Embedded Resource + открываю в свойствах проекта вкладку Resources, создаю там (если ещё не создан) "default resource file" и перетяниваю просто "файл" из Solution Explorer в редактор ресурсов.
А зачем одновременно две копии файла в ресурсах — как отдельный ресурс и как часть resx скомпилированного?
... << RSDN@Home 1.2.0 alpha 4 rev. 1249 on Windows 7 6.1.7600.0>>
Здравствуйте, AndrewVK, Вы писали:
_FR>>Я обычно в свойствах файла (в студии) так же выставляю Build Action = Embedded Resource + открываю в свойствах проекта вкладку Resources, создаю там (если ещё не создан) "default resource file" и перетяниваю просто "файл" из Solution Explorer в редактор ресурсов.
AVK>А зачем одновременно две копии файла в ресурсах — как отдельный ресурс и как часть resx скомпилированного?
Первый (Embedded Resource) нужен для предоставления доспупа к схеме из внешних сборок. Гораздо проще предоставить [наружу] имя ресурса в виде "ConsoleApplication1.MyXmlSchema.xsd", чем "сначала обратитесь к ConsoleApplication1.Properties.Resources.resources", а потом там найдите строку с ключём "MyXmlSchema". Во-вторых, имя "ConsoleApplication1.MyXmlSchema.xsd" можно [удобно] передавать в параметры каких-нибудь атрибутов.
Использование же Resources предоставляет более удобный доступ к сожержимому внутри сборки или тех, кто явно имеет reference на сборку (если сделать генерируемый класс public).
Help will always be given at Hogwarts to those who ask for it.
Здравствуйте, _FRED_, Вы писали:
_FR>Использование же Resources предоставляет более удобный доступ к сожержимому внутри сборки или тех, кто явно имеет reference на сборку (если сделать генерируемый класс public).
Хранение 2 копий одного и того же файла в бинарнике ради сомнительного удобства имхо перебор.
... << RSDN@Home 1.2.0 alpha 4 rev. 1249 on Windows 7 6.1.7600.0>>
Здравствуйте, AndrewVK, Вы писали:
_FR>>Использование же Resources предоставляет более удобный доступ к сожержимому внутри сборки или тех, кто явно имеет reference на сборку (если сделать генерируемый класс public).
AVK>Хранение 2 копий одного и того же файла в бинарнике ради сомнительного удобства имхо перебор.
Конечно перебор, но мне удобства, наоборот, не кажутся сомнительными Какое из двух удобств ты имеешь в виду, кстати? Какой способ из предложенных двух тебе больше нравится? Или какой-то третий?
По факту, Embedded Resource используется очень редко и отказаться от него совсем не просто. Во-вторых, можно сделать свой генеретор хелпера по ресурсам, который будет правильно обрабатывать Embedded Resource и проблемы опять не будет. Наконец, можно вручную (там, где это необходимо) забивать константы с именами ресурсов и предоставлять "пользователям" типизированный и контролируемый в одном месте доступ к ресурсам. Несомненно, любой из этих трёх способов менее противоречив и так же функционально полон, чем предложенный мной.
Но мой способ работы является самым простым в реализации, неудобств никогда не доставлял (нету у меня таких схем или скриптов, на размере которых в бинарнике хотелось бы сэкономить).
Help will always be given at Hogwarts to those who ask for it.
Здравствуйте, _FRED_, Вы писали:
_FR>Конечно перебор, но мне удобства, наоборот, не кажутся сомнительными Какое из двух удобств ты имеешь в виду, кстати?
Генерацию обертки.
_FR>По факту, Embedded Resource используется очень редко
Надо писать "у меня".
... << RSDN@Home 1.2.0 alpha 4 rev. 1249 on Windows 7 6.1.7600.0>>
Здравствуйте, AndrewVK, Вы писали:
_FR>>Конечно перебор, но мне удобства, наоборот, не кажутся сомнительными Какое из двух удобств ты имеешь в виду, кстати? AVK>Генерацию обертки.
Стандартную Resources&? Ту, что в Янусе? Что-то другое?
_FR>>По факту, Embedded Resource используется очень редко
Кстати, я там ошибся: должно быть "По факту, Embedded Resource используется очень редко и отказаться от него совсем не сложно. "
AVK>Надо писать "у меня".
Вообще говоря да, я имел в виду себя. Но неужели кто-то как-то (как я написал тут
) использует Embedded Resource для файлов-скриптов или файлов-схем или файлов-данных которые при этом так же нужны и внутри самой программы?
AVK>Я, например, для таких файлов использую всегда.
Тогда как ты доступаешься из кода к этим ресурсам? Сам объявляешь константы, пишешь хелперные классы и методы для того, что бы там, где ресурс понадобится не нужно было бы самому воевать с ResourceManager/Stream/Encoding и т.п.?
Help will always be given at Hogwarts to those who ask for it.
Здравствуйте, _FRED_, Вы писали:
_FR>Тогда как ты доступаешься из кода к этим ресурсам? Сам объявляешь константы, пишешь хелперные классы и методы для того, что бы там, где ресурс понадобится не нужно было бы самому воевать с ResourceManager/Stream/Encoding и т.п.?
Да.
... << RSDN@Home 1.2.0 alpha 4 rev. 1249 on Windows 7 6.1.7600.0>>