我有一个使用 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 只会在调用堆栈中显示 [External Code] 标记,我无法在支持项目的代码中导航。
是否有人对如何解决此问题有任何想法,以便我可以正确调试支持项目?谢谢!