如何强制 ASP.NET Core 源代码不被优化

Bac*_*ave 6 c# visual-studio-debugging asp.net-core

我正在尝试调试 ASP.NET Core 框架中的防伪代码。

我已使用https://github.com/dotnet/aspnetcore/blob/master/docs/BuildFromSource.md中的说明使用调试配置成功构建了代码。

我已将源代码项目添加到我的测试项目中并引用它。

我检查过配置是否设置为调试。

我已确保已选中“抑制 JIT 优化”。

对于这两个项目,项目属性 -> 构建中的“优化代码”均未选中。

两个项目的“高级选项”(“构建”选项卡下)中的“调试信息”下拉列表已设置为“完整”。

但是,当我在 中命中断点时DefaultAntiforgeryTokenSerializer.Serialize(),在“监视”窗口中查看该方法的本地变量时,它会出现此错误:

无法获取本地或参数的值,因为它在此指令指针处不可用,可能是因为它已被优化掉

在此输入图像描述

如何强制代码不被优化?

我正在使用 Visual Studio Enterprise 2019 v16.8.3。

Bac*_*ave 3

将 Antiforgery 源代码项目添加到我的解决方案后,我必须引用 .csproj 文件中的 dll,而不是添加对 .csproj 文件的项目引用C:\aspnetcore\artifacts\bin\Microsoft.AspNetCore.Antiforgery\Debug\net5.0

我现在可以在“监视”窗口中查看局部变量的值。

这是一个教程: https://medium.com/gitconnected/how-to-debug-asp-net-core-source-code-448544c16473