调试动态加载的DLL



我有一个web应用程序解决方案(比方说在C:WebApp中)。在某个时刻,我需要从另一个解决方案(C:Custom)注入一个外部DLL,并调用其中的一个方法

我使用的是这个代码:

public ActionResult ExecuteCustomAction()
{
    Assembly assembly = Assembly.LoadFile(@"C:CustomCustombinDebugCustom.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);
}

到目前为止没有问题。

我希望能够调试调用的方法(Custom解决方案在另一个VS实例中打开),但没有成功。

我禁用了"Just my code"选项,Debug/Windows/Modules显示Custom.dll的符号已正确加载,我可以将两个VS实例(WebApp VS和Custom VS)附加到w3wp进程,但执行从未在我放入Execute方法的断点上停止。

我不熟悉这个,我是不是遗漏了一些显而易见的东西?

编辑:源是本地构建的,我还尝试将它们复制到应用程序bin文件夹中,引用此路径而不是原始路径。

调试代码时不应使用DLL。DLL总是被认为是一个完整的解决方案,可以在其他程序组件中使用。

Visual Studio不允许您调试从其他项目导入的DLL。

您的解决方案很简单;调试你的代码(通过将其包含在你的应用程序中),确保它正常工作,然后将其移动到一个单独的DLL中,该DLL可以用于任何外部用途。

最新更新