Visual Studio 2005: отладка кода C # из другого проекта? - PullRequest
1 голос
/ 02 июня 2009

У меня есть настольное приложение, которое я разрабатываю для Visual Studio, где мне нужно обновлять небольшую часть приложения на более частой основе. Чтобы избежать неудобств развертывания нового установщика каждый раз, я разделил наиболее часто обновляемые функции поддержки в отдельный проект и скомпилировал его в виде DLL. Настольное приложение теперь загружает эту DLL-библиотеку во время выполнения с отражением, а затем создает экземпляр объекта внутри него на основе общей DLL-библиотеки с определением интерфейса, например:

Assembly a = Assembly.LoadFrom(supportDLLPath);
ISupportModuleInterface obj = (ISupportModuleInterface)a.CreateInstance("SupportCode.SupportObject");
if (obj != null)
{
    obj.OnTransferProgress += new FileTransferProgressHandler(obj_OnTransferProgress);
    obj.OnTransferComplete += new EventHandler(uploader_OnTransferComplete);
    obj.DoWork(packagePath)
}

Большую часть времени он работает нормально, но мне нужно отладить с ним проблему, и я не могу надежно заставить отладчик Visual Studio вмешаться в него. Иногда при нажатии клавиши F11 в коде, например при входе в DoWork, он автоматически находит исходный код DLL в моей системе и отображает его. Однако при возникновении события Visual Studio просто отображает маркер [Внешний код] в стеке вызовов, и я не могу перемещаться внутри кода в проекте поддержки.

У кого-нибудь есть идеи, как это исправить, чтобы я мог правильно отладить проект поддержки? Спасибо!

Ответы [ 2 ]

1 голос
/ 02 июня 2009

Указана ли сборка в окне «Модули» («Отладка -> Windows -> Модули» или нажмите «Ctrl-D, M»), и указана ли она как «Загруженные символы» с символами, загруженными из место, которое вы ожидаете? (Вы можете принудительно загрузить символы, щелкнув правой кнопкой мыши и выбрав «Загрузить символы ...». Если он не может найти соответствующий файл символов, появится диалоговое окно «Открыть ...»).

Также проверьте в этом окне, чтобы убедиться, что модуль не загружен дважды и что версия / временная метка / расположение сборки соответствует ожидаемой.

Наконец, проверьте, не проверен ли «Просто мой код» в разделе «Инструменты -> Параметры -> Отладка», и посмотрите, имеет ли отмена это значение.

0 голосов
/ 02 июня 2009

Можете ли вы вступить в разборку? Если это так, насколько я помню, он даст вам путь к исходному коду, когда был создан pdb. Я должен был сделать это для отладки NHibernate и должен был поместить исходный код в точный путь, по которому он был при создании файла 'pdb'. После этого я мог без проблем войти в исходный код.

...