У меня есть настольное приложение, которое я разрабатываю для 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 просто отображает маркер [Внешний код] в стеке вызовов, и я не могу перемещаться внутри кода в проекте поддержки.
У кого-нибудь есть идеи, как это исправить, чтобы я мог правильно отладить проект поддержки? Спасибо!