程序问答   发布时间:2022-05-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用某些属性/类在 Blazor Webassembly 中调试时未绑定断点大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用某些属性/类在 Blazor Webassembly 中调试时未绑定断点?

开发过程中遇到使用某些属性/类在 Blazor Webassembly 中调试时未绑定断点的问题如何解决?下面主要结合日常开发的经验,给出你关于使用某些属性/类在 Blazor Webassembly 中调试时未绑定断点的解决方法建议,希望对你解决使用某些属性/类在 Blazor Webassembly 中调试时未绑定断点有所启发或帮助;

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

  • 一个“主要”解决方案,包括

    • RCL
    • 启动应用程序的 Wasm 项目
  • 引用主要 RCL(基本组件等)的几个“子”解决方案,其中包括

    • .net5 库(模型、网络服务访问等)
    • 带有组件的 RCL,引用 .net5 库(通过项目引用)

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

@H_653_2@mainRCL 没有对 SubRCL 的引用(根据可配置的 UI 定义,组件通过反射/buildrenderTree() 渲染)。

调试主要解决方案工作得很好(IIS Express/应用程序调试)。 然后我尝试调试 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;
    }
}

被调用的类“Part1()”位于SubSolution的另一个库中

Part1 类中“Dostuff()”方法处的断点总是被命中(在单独的 .net5 库中)。 “IncreaseNum()”方法处的断点仅在使用 [TestEnum] 属性时调用。 一旦使用 [TestEnum] 属性,就会出现“未绑定断点”;另一个库中的“Dostuff()”方法中的断点仍然命中。

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

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

这已经是我尝试调试这些模块化结构解决方案的第二种方法 - 首先我尝试通过 IIS (How to debug Blazor Webassembly on IIS with VS by attaching to Chrome?) 进行调试,但这也没有成功。

解决方法

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

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

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

,

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

最终我找到了解决方法,等待所有项目加载完毕,然后我可以禁用“未绑定”断点并重新选择它。然后它按预期工作。

这不是一个理想的解决方案(尤其是当您在故障排除时有多个断点时),但它是可行的。

大佬总结

以上是大佬教程为你收集整理的使用某些属性/类在 Blazor Webassembly 中调试时未绑定断点全部内容,希望文章能够帮你解决使用某些属性/类在 Blazor Webassembly 中调试时未绑定断点所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: