debugging 在Blazor Webassembly中使用某些属性/类进行调试时出现未绑定断点

wlp8pajw  于 2022-11-14  发布在  其他
关注(0)|答案(3)|浏览(153)

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

  • “主”解决方案,包括
  • 遥控器
  • 用于启动应用程序的Wasm项目
  • 几个“子”解决方案,参考主要RCL(基本组件等),包括
  • .net5库(模型、Web服务访问等)
  • 包含组件的RCL,引用.net5库(通过项目引用)

所有项目都有一个生成后事件,用于将DLL和PDB文件复制到特定路径,例如D:\TMP。SubSolution通过此路径引用MainRCL库。Main Wasm项目也通过此路径引用SubRCL库(用于在startup/Program.cs添加服务)。
MainRCL没有对SubRCL的引用(根据可配置的UI定义,通过反射/BuildRenderTree()呈现组件)。
调试主解决方案工作正常(IIS Express/应用程序调试)。然后我尝试调试子模块-〉我从主解决方案开始调试,并从该VS示例中的子模块项目打开文件。
在一些库中,调试工作正常,但对于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;
    }
}

被调用的类“Part1()”位于子解决方案的另一个库中
Part1类中“DoStuff()”方法处的断点始终被命中(在单独的.net5库中)。“IncreaseNum()”方法处的断点仅在NOT使用[TestEnum]属性时被调用。一旦使用[TestEnum]属性,就有一个“未绑定断点”;另一个库中“DoStuff()”方法中的断点仍被命中。
然后,我尝试“添加现有项目”到SubSolution,并添加了MainWasm项目,然后直接从SubSolution -〉相同行为开始调试。
是否有我监督的事项(例如,关于DLL引用或PDB文件副本)?
这已经是我尝试调试这些模块化结构解决方案的第二种方法--第一次我尝试通过IIS(How to debug Blazor Webassembly on IIS with VS by attaching to Chrome?)进行调试,但也没有成功。

lztngnrs

lztngnrs1#

发现在使用带有枚举参数的属性时存在调试问题:
https://github.com/dotnet/aspnetcore/issues/25380

  • 〉我替换了枚举参数,现在调试工作正常-到目前为止,在修复此问题时没有得到任何反馈
ilmyapht

ilmyapht2#

我的Blazor WASM也遇到了同样的问题,由于“未绑定断点”而无法在VS中调试。我有多个项目在同一个解决方案下运行,虽然最初对WASM的调试工作正常,但过了一段时间就停止了。
最后,我找到了一个解决办法,等到所有的项目都加载了,然后我可以禁用“未绑定”断点并重新选择它。
这不是一个理想的解决方案(特别是在故障排除时有多个断点的情况下),但它是可行的。

mwngjboj

mwngjboj3#

我在.NET 6和Visual Studio 2022中遇到过这个问题。
我创建了一个代码隐藏文件component.razor.cs,但我在razor-file本身也有代码。将代码移到代码隐藏文件解决了这个问题,并启用了断点。

相关问题