【发布时间】:2021-03-23 15:25:23
【问题描述】:
我正在尝试在 ASP.NET Core 框架中调试 Antiforgery 代码。
我已经按照https://github.com/dotnet/aspnetcore/blob/master/docs/BuildFromSource.md 中的说明使用调试配置成功构建了代码。
我已将源代码项目添加到我的测试项目中并引用它。
我已检查配置是否设置为调试。
我已确定“抑制 JIT 优化”已被选中。
Project Properties -> Build 中的“Optimize Code”对两个项目都没有选中。
两个项目的“高级选项”(在“构建”选项卡下)中的“调试信息”下拉菜单已设置为“完整”。
但是,当我在 DefaultAntiforgeryTokenSerializer.Serialize() 中遇到断点时,在 Watch 窗口中查看方法的本地变量时会出现此错误:
无法获取本地或参数的值,因为它在 这个指令指针,可能是因为它已经被优化掉了
如何强制不优化代码?
我正在使用 Visual Studio Enterprise 2019 v16.8.3。
【问题讨论】:
-
创建一个名为
Microsoft.AspNetCore.Antiforgery.ini的文件,然后将其放入存在Microsoft.AspNetCore.Antiforgery.dll的Microsoft.AspNetCore.Antiforgery项目的输出文件夹中。然后,将这些添加到该文件中:[.NET Framework Debugging Control] GenerateTrackingInfo=1 AllowOptimize=0。此外,为您的测试项目创建一个名为AntiforgeryTest.ini的文件,然后执行相同的步骤。参考文档为here。 -
我认为您可以打开 (ctrl-o) 您不想调试的 cs 文件,它应该可以工作吗?
-
@onedevteam.com 如果这么简单我就不会输入这个问题了。
标签: c# asp.net-core visual-studio-debugging