среда, 30 марта 2011 г.

Разработка карточек: как бороться с гуидами и прочими строковыми константами

Добрый день!


Эта заметка предназначена для тех, кто пишет код для работы с данными карточек DV с помощью объектной модели, предоставляемой платформой (сборка DocsVision.Platform.ObjectManager.dll).
Практически сразу разработчик сталкивается с необходимостью искать в документации или с помощью утилиты CardManager какие-то непонятные гуиды и прочие строковые константы, используемые в описании карточки. Естественно, эти строки оформляются как константы и т.д., но за актуальностью значений приходится следить, опечатки обнаруживаются только на этапе тестирования (а хотелось бы при компиляции).
Очевидно, с этими трудностями когда то столкнулись и разработчики DV и чтобы облегчить свое существование разработали инструмент, генерирующий удобную объектную модель для доступа к константам описания карточки. Этот инструмент можно использовать из командной строки или интегрировать в MS Visual Studio версии 8.0 - 10.0. После этого про гуиды можно больше не вспоминать!

Пример файла, сгенерированного с помощью этого инструмента можно найти в проекте, предоставляемом вместе с руководством разработчика (например, Samples\Cards\TestCardLib\Test\Constants\TestCard.cs)

Для запуска из командной строки надо воспользоваться командой
ConstGenerator.exe /i:YourCard.xml

Список параметров командной строки можно посмотреть запустив генератор с ключом /?:
ConstGenerator.exe /?

Для интеграции с MS VS надо зарегистрировать сборку с помощью команды regasm:
regasm ConstGeneratorTool.dll /codebase

После этого надо добавить в проект файл с описанием карточки и указать в поле CustomTool значение DVConstGenerator:


Генерация будет выполняться автоматически при сохранении файла с описанием карточки или по команде контекстного меню RunCustomTool :


Скачать генератор констант можно тут

PS. Эта тема уже освещалась в блоге: http://dvprofessionals.blogspot.com/2009/11/blog-post.html но, к сожалению, осталась незамеченной ...
Кроме того, в новой версии генератора констант добавлена регистрация в 10-й студии.

7 комментариев:

  1. Unexpected error!

    Could not load file or assembly 'DocsVision.Platform.Xml.Schemas, Version=5.0.0.
    0, Culture=neutral, PublicKeyToken=7148afe997f90519' or one of its dependencies.
    The system cannot find the file specified.

    Use the debug switch to see stacktrace
    Exiting ...

    ОтветитьУдалить
  2. В утилите ссылки на библиотеки пятерки. Выложена правильная версия. Ссылку в статье поправил

    ОтветитьУдалить
  3. К сожалению опять не удалось воспользоваться утилитой.

    Строка запуска:
    cmd /k c:\ConstGenerator\ConstGenerator.exe /i:{B534B04D-04BB-47A5-9C2F-7E05DCF05BA3}.xml /l:CS

    Результат:
    Unexpected error!

    Could not load file or assembly 'DocsVision.Platform.Xml.Schemas, Version=5.0.0.
    0, Culture=neutral, PublicKeyToken=7148afe997f90519' or one of its dependencies.
    The system cannot find the file specified.

    Use the debug switch to see stacktrace
    Exiting ...

    ОтветитьУдалить
  4. .assembly extern DocsVision.Platform.Xml.Schemas
    {
    .publickeytoken = (71 48 AF E9 97 F9 05 19 ) // qH......
    [b].ver 5:0:0:0[/b]
    }

    Время прошло и ничего не изменилось.

    На самом деле существует два очевидных решения:
    1) Добавить в архив
    DocsVision.Platform.Xml.Schemas версии 5.0
    2) Дать ссылку на ConstGenerator для версии 4.5, если такой существует

    ПС: замена ссылки в проекте на 4.5 не является решением.

    ОтветитьУдалить
  5. Миша, день добрый, а версия для 4.1 случаем нигде не завалялась?

    ОтветитьУдалить
  6. Катя, есть конечно, но к нему еще лицензию нужно. Напиши мне на почту.

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