在运行时从另一个AppDomain调试动态加载的DLL

Meh*_*ANI 9 .net c# visual-studio

好的,在运行时解析如何在正在运行的应用程序中加载DLL之后(参见我之前的帖子),我注意到在新加载的DLL中插入的断点没有被命中.

情况
我有一个服务器应用程序,我想避免每次我更改动态加载的DLL时终止/重新运行(通过反射)

目标
这是我想要做的事情(我知道这本身可能不可能):

  • 运行Application.exe
  • 在newAppDomain中加载Process.dll并运行Process
  • Debug Process.dll
  • 卸载Process.dll
  • 编辑进程代码,重新编译Process.dll
  • Application.exe中动态重新加载它
  • Debug Process.dll
  • 等等...

问题
我注意到当在调试模式下启动Application.exe时,附加到Application.exe的调试器无法访问从另一个AppDomain加载的代码(我想如果我只是直接从可执行文件启动Application.exe,则没有让VS调试器调试任何东西的方法,包括新加载的DLL)

可能的解决方法
一个变通方法(丑陋的)解决方案是将DLL的"注入"分离到一个单独的可执行文件中运行的应用程序,然后由VS调试器监视

我承认我有点困惑.任何有效,干净的想法?

ste*_*hbu 1

System.Diagnostics.Debugger.Break()DLL 放入当前有断点的位置是否可以正确抛出中断?

http://msdn.microsoft.com/en-us/library/system.diagnostics.debugger.break.aspx

如果不是,我倾向于同意 Sam 的观点,即卸载失败,或者您正在加载与您想象的不同的库。