Visual Studio 2010: схема XML XSD для классов в среде IDE

Всякий раз, когда мне нужно создать файл класса из схемы XML XSD, я использую инструмент .NET xsd.exe и события предварительной сборки в VS, чтобы гарантировать, что мои классы и схемы синхронизируются друг с другом во время сборки. Это, конечно, работает нормально, однако ...

Я заметил, что если XSD и производный класс находятся в одном проекте, VS понимает взаимосвязь и визуально отображает CS как дочерний элемент файла XSD в обозревателе решений. Поэтому мне было интересно, есть ли в Visual Studio 2010 какие-либо функции для создания класса для меня в среде IDE, а не полагаться на сценарий предварительной сборки?

Например, я бы добавил XSD в проект, где-то установил некоторые параметры, и VS возьмет на себя управление и создаст для меня мои классы.

Поддерживает ли VS 2010 что-нибудь подобное? Или мне просто перестать интересоваться и продолжать использовать xsd.exe и предварительную сборку.

ИЗМЕНИТЬ. Я также заметил, что в свойствах файла XSD у меня есть возможность установить Custom Tool, чтение описания кажется близким к тому, к чему я стремлюсь, но я не уверен в правильном использовании для это свойство.

РЕДАКТИРОВАТЬ Кроме того, если есть решение, мне нужно, чтобы оно основывалось на функциях / функциях, которые входят в стандартную комплектацию VS2010. Я бы предпочел не использовать сторонние дополнения и т. Д.


person MrEyes    schedule 03.02.2011    source источник
comment
Похоже, что в VS2012 вы можете добавить файл xsd в свой проект, и он автоматически сгенерирует классы   -  person msmucker0527    schedule 16.02.2015


Ответы (3)


Сама по себе Visual Studio 2010 не содержит таких функций для общего пользования.

Visual Studio имеет некоторую ограниченную поддержку этого преобразования XSD в код в контексте типизированных наборов данных в ADO.NET, но это не решения общего назначения, они нацелены именно на этот один сценарий использования.

Но обратите внимание на надстройку XSD2Code, которая делает именно это.

введите описание изображения здесь

person marc_s    schedule 03.02.2011
comment
Я стараюсь избегать сторонних надстроек, если надстройка должна быть установлена ​​на каждой машине, использующей это решение. В случае Xsd2Code возможно ли разместить надстройку только на одной машине? - person MrEyes; 03.02.2011
comment
@MrEyes: вам нужен только надстройка на машине, которая должна преобразовывать из XSD в C # - остальные программисты могут просто использовать сгенерированный C # - надстройка не требуется на каждой машине. ... и как я уже сказал: в VS ничего универсального назначения для этого нет - так что либо надстройка, либо ничего .... - person marc_s; 03.02.2011
comment
Я установил Xsd2Code версии 3.4, и я не вижу пункт меню «Запуск Xsd2Code Generation», когда я щелкаю правой кнопкой мыши файл xsd в своем решении. Я также проверил, работает ли это в моей установке VS2008, не повезло. Затем я установил версию 3.4 и попробовал бета-версию. Что дает? Я делаю что-то неправильно? - person Chad; 11.12.2011

Вы можете использовать XSD.exe, который находится в C:\program files\Microsoft\SDKs\Windows\v7.0A\Bin\xsd.exe. следуйте инструкциям, чтобы добавить XSD в качестве пункта меню в меню инструментов VS

  1. Добавьте файл XSD в свой проект VS
  2. Перейдите в меню инструментов Visual Studio
  3. Перейти к внешним инструментам
  4. Добавлять
  5. Введите заголовок как XSD
  6. как путь к xsd в вашей системе (обычно C:\program files\Microsoft SDKs\Windows\v7.0A\Bin\xsd.exe.)
  7. Аргументы как $(ItemPath) /c /l:cs
  8. начальный каталог как $(ItemDir)
  9. установите флажок Использовать окно вывода, нажмите ОК

Затем щелкните файлы Xsd в проводнике решений, а затем инструменты - щелкните Xsd, это создаст класс в той же папке, что и файл .XSD. Если вы уже не добавляли файл на шаге 1, вам нужно будет добавить полученный файл .cs в проект, щелкнув правой кнопкой мыши проект в обозревателе решений, выберите «Добавить» -> «Существующий элемент», а затем файл .CS. сгенерированные из .XSD должны присутствовать и могут быть включены.

person user2208720    schedule 25.03.2013
comment
ваш ответ падает ... то же f, каков остальной ответ? - person Peter Elliott; 25.03.2013
comment
Спасибо, но чтобы установить пространство имен сгенерированного класса, мне пришлось сделать небольшой мод. Добавьте сюда / n: пространство имен к аргументам и нажмите «Запрашивать ответы». Теперь вам просто нужно изменить Namespace Here на ваше пространство имен, когда появится приглашение. Сначала я попытался использовать пространство имен по умолчанию, но не нашел способа сделать это. Если кто-нибудь знает способ получше, дайте мне знать. Спасибо - person nfplee; 12.09.2013
comment
Потрясающий. Никогда не знал, для чего нужны эти внешние инструменты. ТАК МНОГО НОВЫХ МЕРОПРИЯТИЙ - person Ryan Bennett; 07.11.2013
comment
Я добавил следующий аргумент, чтобы я мог указать пространство имен сгенерированного кода, выделив текст в моем редакторе: /n:$(CurText) - person Ronnie Overby; 04.02.2015
comment
Я нашел xsd.exe в C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin - person mattumotu; 29.04.2015

Раньше средства для этого существовали в Visual Studio. Вы могли щелкнуть правой кнопкой мыши по xml-схеме, и в контекстном меню был пункт, в котором говорилось что-то вроде «сгенерировать набор данных». Раньше я использовал его часто, и он отлично работал. По какой-то загадочной причине Microsoft удалила эту функцию - может быть, после VS 2003? Я не уверен, почему можно использовать утилиту командной строки и что нельзя выполнять тот же код из меню, но это так.

person Bob Levittan    schedule 15.11.2011