Для примера возьмём 2 класса: Person и Work.
Person.cs:
namespace TestClasses { public class Person { public string FirstName { get; set; } public string LastName { get; set; } public Work WorkInfo { get; set; } } }
Work.cs:
namespace TestClasses { public class Work { public string CompanyName { get; set; } public string Position { get; set; } } }
Для начала необходимо сгенерировать dll. Для этого воспользуемся консолью (cmd.exe) и компилятором csc.exe:
csc /target:library Person.cs Work.cs
Если у вас в переменной окружения не задан путь к данному компилятору, то вам понадобится использовать полный путь к нему. Его месторасположение:
x32 компилятор: C:\Windows\Microsoft.NET\Framework\[версия]\csc.exe x64 компилятор: C:\Windows\Microsoft.NET\Framework64\[версия]\csc.exe
После выполнения получим файл Person.dll.
Следующим шагом будет работа с утилитой xsd.exe. Необходимо выполнить следующую команду в консоли:
xsd Person.dll
Если xsd.exe не описан в переменной окружения, то также указывайте полный путь. Утилита находится по следующему адресу:
C:\Program Files (x86)\Microsoft SDKs\Windows\[Версия]\bin\
Полученная xsd схема:
<?xml version="1.0" encoding="utf-8"?> <xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Person" nillable="true" type="Person" /> <xs:complexType name="Person"> <xs:sequence> <xs:element minOccurs="0" maxOccurs="1" name="FirstName" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" name="LastName" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" name="WorkInfo" type="Work" /> </xs:sequence> </xs:complexType> <xs:complexType name="Work"> <xs:sequence> <xs:element minOccurs="0" maxOccurs="1" name="CompanyName" type="xs:string" /> <xs:element minOccurs="0" maxOccurs="1" name="Position" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:element name="Work" nillable="true" type="Work" /> </xs:schema>