Visual Studio 2015调试自定义控件

我将自定义控件编译为使用Visual Studio 2012开发的DLL,并将其部署到生产环境中而没有任何问题。 应用程序加载时,使用reflection将这些控件作为“插件”加载。

当我使用Visual Studio 2015打开解决方案并尝试设置断点时,断点表明符号已加载但在命中该段代码时它永远不会中断。

在Visual Studio 2012中,这些断点正确破坏。 我试图在Visual Studio 2015中重新编译DLL,但它们仍然不会中断。 所有PDB都与DLL一起使用。 有什么原因可以解释这个问题?

我已经完成了VS中的所有调试设置并且已经卸载/重新安装VS并且仍然存在相同的问题。

确保为DLL项目禁用优化,PDB生成不是none,并且构建路径与其他项目使用DLL的位置相同。 很多时候只是清理整个解决方案,删除Obj文件夹PDB / dll和重建解决了问题。

调试DLL的方法

本节中的每个项目都会创建一个DLL。 您无法直接运行DLL; 它必须由应用程序调用,通常是EXE。 有关更多信息,请参阅创建和管理Visual C ++项目。 调用应用程序可能符合以下任何一个条件:在包含类库的同一Visual Studio解决方案中的另一个项目中构建的应用程序。 已部署在测试或生产计算机上的现有应用程序。 位于Web上并通过URL访问。 包含嵌入DLL的网页的Web应用程序。

调试调用应用程序

要调试DLL,首先要调试调用应用程序,通常是EXE或Web应用程序。 有几种方法可以调试它。 如果您有一个调用应用程序的项目,则可以打开该项目并从“调试”菜单开始执行。 有关更多信息,请参阅b0fe0ce5-900e-421f-a4c6-aa44ddae453c。 如果调用应用程序是已部署在测试或生产计算机上并且已在运行的现有程序,则可以附加到该程序。 如果DLL是Internet Explorer托管的控件或网页上的控件,请使用此方法。 有关更多信息,请参阅636d0a52-4bfd-48d2-89ad-d7b9ca4dc4f4。 您可以从DLL项目调试它。 有关更多信息,请参见如何:从DLL项目调试。 您可以从Visual Studio立即窗口调试它。 在这种情况下,立即窗口扮演应用程序的角色。 在开始调试调用应用程序之前,通常需要在类库中设置断点。 有关更多信息,请参阅fe4eedc1-71aa-4928-962f-0912c334d583。 当命中断点时,您可以单步执行代码,观察每行的操作,直到找出问题为止。 有关更多信息,请参见8791dac9-64d1-4bb9-b59e-8d59af1833f9。

网页上的控件

要调试Web页面控件,请创建一个嵌入它的ASP.NET页面(如果此页面尚不存在)。 然后,您可以在网页代码和控制代码中放置断点。 然后,从Visual Studio调用Web页面。 在开始调试调用应用程序之前,通常需要在DLL中设置断点。 当命中断点时,您可以单步执行代码,观察每行的操作,直到找出问题为止。 有关更多信息,请参阅FE4EEDC1-71AA-4928-962F-0912C334D583。

即时窗口

您可以在没有调用应用程序的情况下评估DLL中的函数或方法。 您进行设计时调试,并使用立即窗口。 要以这种方式进行调试,请在DLL项目打开时执行以下步骤:打开Debugger Immediate窗口。 若要在类Class1中测试名为Test的方法,请通过在“立即”窗口中键入以下C#代码来实例化类型为Class1的对象。 此托管代码适用于Visual Basic和C ++,并具有适当的语法更改:

Class1 obj = new Class1(); 

在C#中,所有名称都必须是完全限定的。 此外,任何方法或变量必须位于调试会话的当前范围和上下文中。 假设Test接受一个int参数,使用Immediate窗口评估Test:

 ?obj.Test(10) 

结果将打印在立即窗口中。 您可以通过在其中放置断点继续调试Test,然后再次评估该函数:

 ?obj.Test(10); 

断点将被击中,您将能够逐步完成测试。 执行离开Test后,调试器将返回设计模式。

有关更多信息,请访问调试DLL项目 。 希望这可以帮助…

1)尝试添加此标记

在配置文件的标记内。

2)清洁您的解决方案。

3)在解决方案>属性>项目依赖项>选择“DLLs”项目中的复选框,并将“exe”项目保留为启动项目。

4)构建解决方案,如果dll首先在项目的不同项目中构建,则构建“.exe”项。

5)如果这不起作用,尝试为您的解决方案设置一个不同的.net框架(清理配置文件),然后设置原始.net框架,最后再次尝试步骤1,2,3和4。

它可能是没有加载符号。

当您附加到程序并且确定已加载“插件”时选择Debug – > Windows – > Modules。

在列表中找到您的dll并查看“符号状态”列。 它可能说“无法找到或打开PDB文件”或“未加载符号”。

通常右键单击并选择“加载符号”可以解决此问题。

它将自动加载文件或要求您手动查找pdb。