我有一个桌面应用程序,我用Visual Studio开发,我需要更频繁地更新应用程序的一小部分。为了避免每次部署新安装程序带来的不便,我将更频繁更新的支持功能拆分为单独的项目并将其编译为DLL。现在的桌面应用程序在与反射运行时加载这个DLL,然后进行实例化与接口定义的共享DLL里面的对象,像这样:Visual Studio 2005:调试来自不同项目的C#代码?
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仅在Call Stack中显示[External Code]标记,并且我无法在支持项目中的代码中导航。
有没有人有任何想法如何解决这个问题,所以我可以正确调试支持项目?谢谢!
成功!它在将它指向PDB文件并重新启动项目之后将其拾取。 – jasonh 2009-06-02 19:45:22