调试动态加载的DLL

时间:2015-06-24 09:48:20

标签: c# asp.net debugging reflection

我有一个网络应用解决方案(让我们在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实例中打开),但没有成功。

我禁用了#34;只是我的代码"选项,Debug / Windows / Modules显示正确加载Custom.dll的符号,我可以将两个VS实例(WebApp VS和自定义VS)附加到w3wp进程,但执行永远不会在断点上停止我把Execute方法放进去了。

我不熟悉这个,我错过了一些明显的东西吗?

编辑:源是本地构建的,我也尝试在app bin文件夹中复制它们,引用此路径而不是原始路径。

1 个答案:

答案 0 :(得分:0)

调试代码时不应使用DLL。 DLL始终被视为可以在其他程序组件中使用的完整解决方案。

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

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