如何在启动应用程序之前在 system.web.mvc 中放置断点?

How to place breakpoints in system.web.mvc before starting an app?

我想了解 ASP.NET MVC 的模型绑定器是如何工作的,方法是在我的操作方法执行之前在某些方法中放置断点。例如将它们放在 DefaultModelBinder class 中。我经历了将一些 MVC 的项目源添加到我的解决方案中的方法(比如 System.Web.MVC、System.Web.Razor、System.Web.WebPages、System.Web.Helpers...)所以我可以 运行 我的版本并在我喜欢的地方放置断点,但我收到错误“Could not load file or assembly 'System.Web.Mvc' or one of its dependencies. Strong name signature could not be verified"。我正在使用引用 System.Web.MVC 的第三方签名组件,我认为这就是导致错误的原因。

是否有其他方法可以在我的代码 运行 之前跟踪到 System.Web.MVC 代码?我知道设置 Visual Studio 以从符号服务器获取相关符号,但我不知道如何在我自己的代码 运行s.

之前在 .NET 代码中放置断点

我能够设置断点,它们会被击中。

  • 设置 VS 以从符号服务器加载符号。
  • 在您的应用中设置断点
  • 遇到断点时,打开模块window并设置System.Web.Mvc.dll自动加载其符号文件
  • 运行 应用再次处于调试模式。遇到断点时,打开调用堆栈 window。 Select System.Web.Mvc.dll 中的一个有趣的行。这些行应该形成对比,这意味着它们的来源是可用的(我猜)。
  • 右键单击该行并 select 'Go to Source Code'。将打开一个对话框,要求您找到源文件。
  • 我有 System.Web.Mvc 的源代码,所以我打开源文件。
  • 在里面设置一些断点。
  • 运行 应用再次处于调试模式。现在 System.Web.Mvc 内的那些断点将被命中。
  • (我假设我可以在 VS 中打开 System.Web.Mvc 中的任何源文件并在其中设置断点,它们将会被击中。我假设即使我的文件不在同一位置,断点也会被击中作为符号文件中的原始位置,因为我关闭了 'Require source files to exactly match the original version' 设置。我需要验证这些假设)