База знаний

Номер статьи: 1503 | Категория: Инструменты разработки | Тип: Задача – Решение | Последнее обновление: 24.12.2013

Как отладить внешнюю сборку .NET?

Описание

Как отладить скрипт внешней сборки .NET?

Решение

Для того, чтобы вызвать отладчик внешней сборки .NET, в текст сборки достаточно вставить строку System.Diagnostics.Debugger.Break(); . Этот метод является точкой остановки выполнения скрипта и вызывает программу-отладчик.

Рассмотрим следующий пример: 
Нам требуется отладить код внешней сборки, обрабатывающей пользовательский этап. Данный скрипт выполняется Станцией Обработки, которая не имеет оболочки способной вызывать программу-отладчик, поэтому отладить код можно только из внешней сборки. Приведенный ниже текст внешней сборки вставляет в поле имя файла, из которого был извлечен документ:

using System;
using ABBYY.FlexiCapture;

namespace MyClassLibrary
{
    public class MyClass
    {
        public void DocumentName(IDocument Document, IProcessingCallback Processing)
        {
            // Script breakpoint.
            System.Diagnostics.Debugger.Break();

            string docName = Document.Pages[0].ImageSourceFileSubPath;
            int slashPosition = docName.LastIndexOf("\\");
            // Cut off the beginning.
            docName = docName.Remove(0, slashPosition + 1);
            // Cut off the file extension .tif or .pdf.
            docName = docName.TrimEnd('.', 't', 'i', 'f', 'p', 'd', 'f');
            Document.Field("Test1[0]\\Test").Value = docName;
        }
    }
}

Так будет выглядеть вызов кода внешней сборки в скрипте этапа:

// Language: C# .Net 
// Script type: Document Processing
MyClassLibrary.MyClass myClass = new MyClassLibrary.MyClass();
myClass.DocumentName(Document, Processing);

Теперь при выполнении данного скрипта будет вызываться программа-отладчик:
Debugger
Открыв окно отладчика, вы сможете отладить код внешней сборки.

Важно! Скрипт этапа выполняется Станцией Обработки, поэтому при выполнении кода внешней сборки программа-отладчик будет вызываться на машине Станции Обработки. В связи с этим, мы рекомендуем Вам производить отладку кода на локальной Станции Обработки.
Если произвести отладку на локальной станции невозможно, то для отладки на удаленной станции, пожалуйста, проделайте следующее:

  1. Установите программу-отладчик на машину Станции Обработки. Настоятельно рекомендуем, чтобы версии отладчиков, в котором делали проект внешней сборки и в котором будет происходить отладка, совпадали.
  2. Перейдите в <папка проекта внешней сборки>\obj\Debug например: "D:\ExternalAssemblesC#\ClassLibrary1\ClassLibrary1\obj\Debug";
  3. Откройте файл *.csproj.FileListAbsolute.txt;
  4. Восстановите структуру папок на машине, где производится отладка, и переместите в них указанные файлы.
    Наиболее простой альтернативой является копирование проекта целиком.

После проделанных действий код внешней сборки будет доступен для отладки на удаленной машине.

Описанный метод подходит для отладки любых внешних сборок, подключенных в любой части комплекса (пользовательский этап, правило в определении документа, обработчик событий интерфейса и тд.).

366 считают это полезным.
Была ли эта информация вам полезна?