在 Visual Studio 中调试时永远不会命中从 .Net Reflector 反编译程序集中放置的断点
Breakpoint put in decompiled assembly from .Net Reflector is never hit while debugging in Visual Studio
首先,我创建了一个测试程序集HelloWorld.dll
,我想调试它并使用发布配置构建它。
namespace HelloWorld
{
public class HelloClass
{
public string SayHello(string name)
{
return "Hi " + name + "!";
}
}
}
然后我创建了标准 ASP.NET MVC 项目并且:
- 引用
HelloWorld.dll
程序集
修改了 HomeController 的 About
方法
public ActionResult About()
{
var testingClass = new HelloClass();
ViewBag.Message = testingClass.SayHello("John");
return View();
}
通过.NET Reflector Object Browser反编译HelloWorld程序集
- 在 SayHello 方法中放置断点(在反编译文件中)
- 运行 在 IIS express 或 IIS 中调试并请求
~/Home/About
页面
结果:从未命中断点。
当我转到 Debug -> Windows -> Modules
时,似乎加载了 HelloWorld.dll
程序集的符号:
那么,我做错了什么?
编辑:我正在使用 Visual Studio 2015 Update 1 和 RedGate Reflector 8.5
经过数小时的研究并联系了 RedGate 支持,这似乎是他们软件中的一个错误。
解决方法:
- 使用 Visual Studio 2013,按预期工作
- 在 VS 2015 中转到
.NET Reflector -> Generate PDBs
和 select C# version
到 v4.5
。 Reflector 与 C# version v4.6
有一些问题
首先,我创建了一个测试程序集HelloWorld.dll
,我想调试它并使用发布配置构建它。
namespace HelloWorld
{
public class HelloClass
{
public string SayHello(string name)
{
return "Hi " + name + "!";
}
}
}
然后我创建了标准 ASP.NET MVC 项目并且:
- 引用
HelloWorld.dll
程序集 修改了 HomeController 的
About
方法public ActionResult About() { var testingClass = new HelloClass(); ViewBag.Message = testingClass.SayHello("John"); return View(); }
通过.NET Reflector Object Browser反编译HelloWorld程序集
- 在 SayHello 方法中放置断点(在反编译文件中)
- 运行 在 IIS express 或 IIS 中调试并请求
~/Home/About
页面
结果:从未命中断点。
当我转到 Debug -> Windows -> Modules
时,似乎加载了 HelloWorld.dll
程序集的符号:
那么,我做错了什么?
编辑:我正在使用 Visual Studio 2015 Update 1 和 RedGate Reflector 8.5
经过数小时的研究并联系了 RedGate 支持,这似乎是他们软件中的一个错误。
解决方法:
- 使用 Visual Studio 2013,按预期工作
- 在 VS 2015 中转到
.NET Reflector -> Generate PDBs
和 selectC# version
到v4.5
。 Reflector 与C# version v4.6
有一些问题