понедельник, 2 ноября 2009 г.

Генерация класса с константами по схеме карточки

В тестовом проекте библиотеки карточек есть интересный комментарий, в классе с константами.



Что это за инструмент, который генерирует код автоматически, я опишу в данной статье.


Инструментов два:
  • DVConstGenerator – по XML-описанию карточки создает cs-файл с константами (идентификаторы секций, названия полей)
  • ObjectModelGenerator – по  XML-описанию карточки создает cs-файл с объектной моделью для работы с данными. Объектная модель включает в себя также и константы, поэтому при использовании этой утилиты, предыдущая уже не требуется.
Использование утилит.

1. Запуск из командной строки.
Каждая утилита имеет мини справку по своим параметрам. Достаточно запустить с ключом "/?".
Пример запуска:
ConstGenerator.exe /i:SLA.xml /l:CS
или
ObjectModelGenerator.exe /in:SLA.xml

2. Интеграция с Visual Studio 2005/2008
Для этого нужно зарегистрировать ее библиотеку (*.dll) командой:


regasm.exe <путь к dll-файлу> /codebase

Далее нужно включить в состав проекта файл с XML-описанием (схемой) карточки. В свойствах файла, указать CustomToolName

  • DVConstGenerator – для генератора констант
  • DVAdapterGenerator – для генератора объектной модели

В поле Custom tool namespace можно отдельно специфицировать пространство имен, которое будет использоваться в сгенерированном файле.

После этого правой кнопкной мыши на XML-файле вызвать команду Run custom tool. Будет сгенерирован cs-файл.

Скачать утилиты

Известная особенность: код генерируется только для C#, для VB.net, хоть такой параметр и есть, код не создается. (кстати, если нужно перевести код, то есть хороший переводчик: http://www.developerfusion.com/tools/convert/csharp-to-vb/)

1 комментарий:

  1. Забыли указать что версия DocsVision ТОЛЬКО 4.3!!!!!!!!!!!!!!!


    System.IO.FileNotFoundException was unhandled
    Message: Could not load file or assembly 'DocsVision.Platform.Data, Version=4.3.0.0, Culture=neutral, PublicKeyToken=7148afe997f90519' or one of its dependencies. The system cannot find the file specified.

    ОтветитьУдалить