[英]Attach/Debug Plugin DLL That Has Been Dynamically Loaded By A Third Party Application?
[英]Debug a dynamically loaded DLL
我有一个Web应用程序解决方案(假设在C:\\WebApp
)。 在某些时候,我需要从另一个解决方案( C:\\Custom
)注入一个外部DLL并调用其中的方法。
我正在使用此代码:
public ActionResult ExecuteCustomAction()
{
Assembly assembly = Assembly.LoadFile(@"C:\Custom\Custom\bin\Debug\Custom.dll");
Object o = assembly.CreateInstance("Custom.Custom");
if (o != null)
{
MethodInfo method = o.GetType().GetMethod("Execute");
Object[] ob = // some params
if (method != null)
{
Object returnValue = method.Invoke(o, ob).ToString();
return new HttpStatusCodeResult(HttpStatusCode.OK);
}
}
return new HttpStatusCodeResult(HttpStatusCode.InternalServerError);
}
直到现在都没问题。
我希望能够调试调用的方法(自定义解决方案在另一个VS实例中打开),但没有成功。
我禁用了“只是我的代码”选项,Debug / Windows / Modules显示正确加载了Custom.dll的符号,我可以将两个VS实例(WebApp VS和自定义VS)附加到w3wp
进程,但执行从不在我放入Execute
方法的断点上停止。
我不熟悉这个,我错过了一些明显的东西吗?
编辑:源是在本地构建的,我也尝试在app bin文件夹中复制它们,引用此路径而不是原始路径。
调试代码时不应使用DLL。 DLL始终被视为可以在其他程序组件中使用的完整解决方案。
Visual Studio不允许您调试从其他项目导入的DLL。
你的解决方案很简单; 调试你的代码(通过将其包含在你的应用程序中),确保它正常工作,然后将其移动到一个单独的DLL,可以用于任何外部使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.