C# 06.10.2018 admin No comments

Генерация xsd схемы из классов C#

Для примера возьмём 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>


1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 5,00 из 5)
Загрузка...