调试未在 .NET CORE MVC 6 应用程序中命中断点
Debugging not hit breakpoints in .NET CORE MVC 6 application
我正在开发 .NET CORE 1.0 MVC 6 应用程序,我坚持使用调试点,因为它昨天停止了。随着尝试次数的增加,我删除了项目并重新开始。第一次它加载符号,即使我在工具 --> 调试 --> 符号中取消选中,但是它遇到了断点。现在,如果我选择 'Enable Just My Code' 但在控制器中,它只会命中 C# class 'Startup.cs'。我从下拉列表中有调试选项,不太确定为什么。这里需要帮助。
我改成
Select调试->选项->调试->常规
勾选启用 .NET Framework 源步进。
还是没有成功
模块
尝试在控制器主目录中命中 class 索引中的 MVC 核心
public class HomeController : Controller
{
public IActionResult Index()
{
var x = 2 + 3;
return View();
}
public IActionResult About()
{
var x3 = 2 + 6;
var xx = "dd";
ViewData["Message"] = "Your application description page.";
return View();
}
调试输出
实际上您的屏幕截图不是调试输出,而是构建输出。
如果你在TOOLs->Options->Debugging->Symbols下禁用"Enable Just My Code"和enable/disableMicrosoft symbols Server,然后重新打开后调试你的应用程序,如何关于结果?
如果我创建一个新的应用程序,断点是正常的,如果我重新打开解决方案,实际上它仍然可以断点,但是非常慢。和截图1一样,如果你访问"debug"输出window,它会一个一个列出加载的符号,大约1分钟后,它会像截图2一样命中断点。当然,我在 TOOLS->Options->Debugging->Symbols 下启用 Microsoft symbols 并为上述步骤禁用 Enable Just My Code。
所以对于你的问题,一个可能的原因是加载符号比较慢,稍等片刻。
虽然 Jack Zhai-MSFT 的解决方案有效,但我仍然有一些奇怪的行为:断点部分有效。在这里找到完美的解决方案:
虽然上面 link 在我的案例中加载了大量解决方案,但将配置从 Release 更改为 Debug 在 Build 菜单下 Configuration Manager 解决了我所有与断点相关的问题。
我遇到了同样的问题,并且 none 上述解决方案有效。
最后我发现下面的设置很有魅力。
转到工具->选项->调试->常规->取消选中"Use Managed Compatibility Mode"复选框
通过启用以下调试选项为我工作"Enable .Net framework source stepping"
我以为我 运行 遇到了同样的行为,但在我的情况下,它是由我的 .NET Core MVC 应用程序的 Startup.cs class 中的时间耦合引起的。
我将 app.UseMiddleware() 调用包含在 app.UseMvc() 调用下方,因为这个我的中间件组件将初始化,但从未被进入我的应用程序的请求击中。将我的呼叫移至 app.UseMiddleware 呼叫上方 app.UseMvc 呼叫修复了此问题,现在我的请求已通过我的自定义中间件。
app.UseMVC 必须是最后一个 "app.Use()" 在你的配置方法中调用Startup.csclass
这解决了我的问题
-> 关闭 visual studio。 -> 删除 .vs 文件夹重新打开 visual studio。这样做解决了断点无法命中的问题
我正在开发 .NET CORE 1.0 MVC 6 应用程序,我坚持使用调试点,因为它昨天停止了。随着尝试次数的增加,我删除了项目并重新开始。第一次它加载符号,即使我在工具 --> 调试 --> 符号中取消选中,但是它遇到了断点。现在,如果我选择 'Enable Just My Code' 但在控制器中,它只会命中 C# class 'Startup.cs'。我从下拉列表中有调试选项,不太确定为什么。这里需要帮助。
我改成
Select调试->选项->调试->常规
勾选启用 .NET Framework 源步进。
还是没有成功
模块
尝试在控制器主目录中命中 class 索引中的 MVC 核心
public class HomeController : Controller
{
public IActionResult Index()
{
var x = 2 + 3;
return View();
}
public IActionResult About()
{
var x3 = 2 + 6;
var xx = "dd";
ViewData["Message"] = "Your application description page.";
return View();
}
调试输出
实际上您的屏幕截图不是调试输出,而是构建输出。
如果你在TOOLs->Options->Debugging->Symbols下禁用"Enable Just My Code"和enable/disableMicrosoft symbols Server,然后重新打开后调试你的应用程序,如何关于结果?
如果我创建一个新的应用程序,断点是正常的,如果我重新打开解决方案,实际上它仍然可以断点,但是非常慢。和截图1一样,如果你访问"debug"输出window,它会一个一个列出加载的符号,大约1分钟后,它会像截图2一样命中断点。当然,我在 TOOLS->Options->Debugging->Symbols 下启用 Microsoft symbols 并为上述步骤禁用 Enable Just My Code。
所以对于你的问题,一个可能的原因是加载符号比较慢,稍等片刻。
虽然 Jack Zhai-MSFT 的解决方案有效,但我仍然有一些奇怪的行为:断点部分有效。在这里找到完美的解决方案:
我遇到了同样的问题,并且 none 上述解决方案有效。 最后我发现下面的设置很有魅力。
转到工具->选项->调试->常规->取消选中"Use Managed Compatibility Mode"复选框
通过启用以下调试选项为我工作"Enable .Net framework source stepping"
我以为我 运行 遇到了同样的行为,但在我的情况下,它是由我的 .NET Core MVC 应用程序的 Startup.cs class 中的时间耦合引起的。
我将 app.UseMiddleware() 调用包含在 app.UseMvc() 调用下方,因为这个我的中间件组件将初始化,但从未被进入我的应用程序的请求击中。将我的呼叫移至 app.UseMiddleware 呼叫上方 app.UseMvc 呼叫修复了此问题,现在我的请求已通过我的自定义中间件。
app.UseMVC 必须是最后一个 "app.Use()" 在你的配置方法中调用Startup.csclass
这解决了我的问题 -> 关闭 visual studio。 -> 删除 .vs 文件夹重新打开 visual studio。这样做解决了断点无法命中的问题