2011-12-23 3 views
4

Есть некоторые XSD и WSDL. Я хочу сгенерировать код C#. Я использовал svcutil.exe, но он не генерирует XML-комментарии из XSDs аннотаций:Как создать классы .NET с комментариями WSDL и XSD

<annotation> 
    <documentation>VERY USEFULL DOCUMENTATION</documentation> 
</annotation> 

Я хочу это в созданный файл:

public class SomeData 
{ 
    /// <summary> 
    /// VERY USEFULL DOCUMENTATION 
    /// </summary> 
    public string SomeField 
    {...} 
} 

Другой вопрос: как заставить svcutil.exe генерировать по одному файлу в классе? (Я знаю, что я могу использовать рефакторинг из Resharper для перемещения классов в отдельные файлы, но мне это не нравится)

Итак, как сгенерировать несколько файлов (по одному файлу на класс) с XML-комментариями из XSD и WSDL

+0

Почему вы хотите их в отдельных файлах? Эти типы генерируются инструментом, и вы не собираетесь менять их. Неважно, находятся ли они в одном файле или десятке - вам все равно, что внутри файла. –

+0

John, я хочу сделать это из-за нашей политики кода :) – Jarlaxle

+0

Такие политики не должны применяться к сгенерированному коду. Например, применимы ли ваши политики к файлам Windows Forms .Designer.cs? Если инструмент генерирует файлы, и если они не читаются людьми, то большинство политик не должны применяться к ним. Применяются ли ваши правила именования? Если поле называется «javaStyleName», вам потребуется переименовать его в «JavaStyleName»? –

ответ

4

Возможно, вы сможете использовать WCFExtras + http://wcfextrasplus.codeplex.com/.

  1. Сделать WCFExtras.dll видна SvcUtil.exe (например, поместив их в том же каталоге)
  2. добавить этот раздел к app.config из клиентского приложения, или место в новом файле конфигурации и вызывать SvcUtil с/svcutilConfig переключатель

    <configuration> 
        <system.serviceModel> 
        <client> 
         <metadata> 
         <wsdlImporters> 
          <extension type="WCFExtras.Wsdl.Documentation.XmlCommentsImporter, WCFExtras" /> 
         </wsdlImporters> 
         </metadata> 
        </client> 
        </system.serviceModel> 
    </configuration> 
    

пример командной строки, где configfile.xml находится конфигурационный файл выше: svcUtil.exe [URL службы]/svcutilConfig: [путь к configfile.xml]

+3

Для будущих читателей: пространство имен WCFExtras изменилось на WFCExtrasPlus, и оно также относится к его имени сборки. Если вы используете полное имя, убедитесь, что используете нужный вариант и открытый ключ, который вы можете найти в комментариях на странице документации библиотеки (или самой сборки). Основная документация не обновлялась в возрасте и ссылается на теперь устаревший номер версии как токен открытого ключа. – Maverik

+0

Не работает для меня. Ошибка Svcutil: Ошибка в инструменте. Ошибка: ссылка на объект не установлена ​​в экземпляр объекта. ' –

1

Я только что узнал о xSd2Code визуальной студии надстройки. Он делает именно то, что вы хотите, с текстом аннотации/документации Xsd, перемещенным в тег резюме документации C# xml.

Существует версия сообщества на CodePlex. У paid version есть еще несколько приятных дополнительных функций, поэтому я решил заплатить $ 45 за лицензию на один год. Примечание. Я не являюсь частью компании, просто довольный клиент.

Scott Crowder

+0

xsd2Code - это хорошо.Я тоже заплатил версию. Он имеет два основных недостатка: он поддерживает только схему (без wsdl/contract); некоторые атрибуты с нулевым значением xml (т. е. десятичные) не обрабатываются должным образом с помощью генерации кода, поэтому вам нужно закодировать его вручную. –

Смежные вопросы