使用某些 attributes/classes 在 Blazor Webassembly 中调试时未绑定断点

Unbound breakpoints when debugging in Blazor Webassembly when using certain attributes/classes

我正在使用 VS 2019 (16.8.4) 开发模块化 blazor 应用程序 (5.0.2),其结构如下:

所有项目都有一个 post-build 事件来将 DLL 和 PDB 文件复制到特定路径,例如D:\TMP。 SubSolution 通过此路径引用 MainRCL 库。 Main Wasm 项目也通过此路径引用 SubRCL 库(用于在 startup/Program.cs 添加服务)。

MainRCL 没有对 SubRCL 的引用(组件根据可配置的 UI 定义通过 reflection/BuildRenderTree() 呈现)。

调试主要解决方案非常有效(IIS Express/Application 调试)。 然后我尝试调试 SubModules -> 我从 MainSolution 开始调试并从这个 VS 实例中的 SubModules 项目打开文件。

在某些库中,调试工作正常,但对 SubRCL(“未绑定断点”)无效。然后我能够用示例解决方案重现(非常奇怪的)问题:

“MainRCL”提供了 2 个属性:

[AttributeUsage(AttributeTargets.Class)]
public sealed class TestNoEnumAttribute : Attribute
{
    public string Name { get; set; }

    public string Mode { get; set; }

    public TestNoEnumAttribute(string name, string mode)
    {
        Name = name;
        Mode = mode;
    }
}

[AttributeUsage(AttributeTargets.Class)]
public sealed class TestEnumAttribute : Attribute
{
    public string Name { get; set; }
   
    public EventExecutionMode Mode { get; set; }
  
    public TestEnumAttribute(string name, EventExecutionMode mode)
    {
        Name = name;
        Mode = mode;
    }
}

public enum EventExecutionMode
{
    AutomaticAll = 0,
    ManualConfiguration = 2
}

SubRCL 在测试方法中使用这些属性:

[TestNoEnum("Test", "EventExecutionMode.ManualConfiguration")]
//[TestEnum("Test", EventExecutionMode.ManualConfiguration)]
public class Module1Test
{
    public int IncreaseNum(int num)
    {
        var x = new Part1();
        var part1Num = x.DoStuff(num);
        var newNum = part1Num + 1;
        return newNum;
    }
}

调用的class“Part1()”位于SubSolution的另一个库

第 1 部分 class 中“DoStuff()”方法处的断点始终命中(在单独的 .net5 库中)。 “IncreaseNum()”方法处的断点仅在 [TestEnum] 属性为 NOT 时调用。 一旦使用 [TestEnum] 属性,就会出现“Unbound Breapoint”;另一个库中“DoStuff()”方法中的断点仍然命中。

然后我尝试将现有项目“添加”到 SubSolution 并添加 MainWasm 项目并直接从 SubSolution 开始调试 -> 相同的行为。

有没有我监督的事情(例如关于 DLL 引用或 PDB 文件复制)?

这已经是我尝试调试这些模块化结构解决方案的第二种方法 - 首先我尝试通过 IIS () 进行调试,但这也没有成功。

发现使用带有枚举参数的属性时存在调试问题:

https://github.com/dotnet/aspnetcore/issues/25380

-> 我替换了枚举参数,现在调试工作正常 - 到目前为止没有得到任何反馈

由于 'Unbound breakpoint',我的 Blazor WASM 也遇到了同样的问题,无法在 VS 中进行调试。我在同一个解决方案下有多个项目 运行,虽然最初调试适用于 WASM,但一段时间后它停止了。

最终我找到了解决方法,方法是等到所有项目都加载完毕,然后我可以禁用 'Unbound' 断点并重新 select 它。然后它按预期工作。

这不是一个理想的解决方案(特别是如果您在故障排除时有多个断点)但它是可行的。