【问题标题】:How do I debug code in a separate project (in same solution) that a Blazor app references?如何在 Blazor 应用程序引用的单独项目(在同一解决方案中)中调试代码?
【发布时间】:2021-04-02 14:16:08
【问题描述】:

我正在尝试将我的控制台应用程序移植到 Blazor 应用程序。在控制台类型项目中一切正常,但它不在 Blazor 项目中,所以我正在尝试排除故障。该应用程序从同一解决方案中的单独“类库”类型项目中调用一些东西。

但故障排除过程本身也存在问题。经过一番困惑后,我意识到在引用的类库类型项目的代码中设置的断点没有被命中。

检查控制台,我看到它给出了错误:

L: Unable to insert breakpoint at FtxApi.FtxWebSocketApi/<Test>d__5:MoveNext ():15

我需要做些什么(项目设置或其他东西)才能让调试器点击这些?还是暂时不支持?

现在我只是使用很多Console.Writeline 作为一种解决方法/替换。而且我注意到引用的类库类型项目中的Console.Writelines 正在被调用..但仅限于来自第三方包的某个方法调用。执行似乎从那一点返回(之后没有调用任何内容)。不确定那里出了什么问题 - 需要进行更多故障排除,这使我们回到了没有触发的断点(理想情况下我可以利用它们)。

我知道 Blazor 是新的(而且我是使用它的绝对初学者),所以并不是所有东西都需要或将是完美的。我出于好奇而询问断点(我想让它们工作,但没什么大不了的)。

我真正想要了解的是:代码看似停止执行/返回到那个特定的方法调用可能会发生什么?我调用的方法是WebSocket.Open(),来自包WebSocket4Net。如上所述,我之前已经测试过这个(在控制台应用程序中)并且它运行良好,所以我猜它与我不熟悉的 Blazor 有某种关系。我不确定如何获取更多信息来帮助调试此问题。任何帮助表示赞赏。

编辑:

我设法在不使用诸如断点之类的调试工具的情况下找到了解决问题的方法(我只是经常使用 Console.Writeline)。我猜 Blazor 不支持某些 websocket 实现之类的,因为我发现了这个错误:System.PlatformNotSupportedException: Operation is not supported on this platform. blazor.webassembly.js:1 at System.Net.Sockets.Socket 来自websocket.Open()。我设法通过实现 System.Net.Websockets 来让它工作,类似于this。虽然我的故障排除已经结束(目前),但我仍然想知道是否可以在其他引用的项目中使用断点。

【问题讨论】:

    标签: visual-studio visual-studio-2019 blazor visual-studio-debugging blazor-client-side


    【解决方案1】:

    有两种解决方案:

    解决方案1:在解决方案上右击,选择Properties,选择Common Properties,选择Multiple startup project,为Foo.Client、Foo.Server、Foo.Shared选择操作Start。像这样的

    见https://blog.magnetismsolutions.com/blog/paulnieuwelaar/2015/04/07/debug-multiple-projects-at-the-same-time-in-visual-studio

    解决方案2:编译SharedProject,附加PDB进行调试。

    https://docs.microsoft.com/en-us/visualstudio/debugger/how-to-debug-an-executable-not-part-of-a-visual-studio-solution?view=vs-2019

    【讨论】:

    • 嗯,也许我误解了,但我认为这些解决方案不适用于我的特定问题。我提到的SharedProject 只是占位符项目,指的是Visual Studio 的实际shared project 类型。我认为这可以被认为是 Blazor 项目直接拥有代码(即只是复制到里面)。所以也许SharedProject 不是问题的原因,而是特别与 Blazor 有关?
    • 不记得我以前曾尝试在共享项目中使用断点,所以也许我会尝试一下看看(即它可能与 Blazor 无关)。我可能还需要退后一步,考虑一下,以确保我所说的实际上是有道理的。猜猜我可以尝试在不同的(非控制台和非 Blazor)项目中运行代码,看看它是否遇到同样的问题。
    • 哦,我的错,我刚刚意识到它实际上是我引用的“类库”类型项目(不是共享项目)。我想同样的想法仍然适用。
    • 我仍然相信这与 Blazor 或我的 Blazor 项目有关(或者我还没有想到/提到的其他事情)。有点搞砸了,这就是我不断回来的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多