首页 > 解决方案 > 如何在 Blazor 应用程序引用的单独项目(在同一解决方案中)中调试代码?

问题描述

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

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

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

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

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

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

我知道 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 来让它工作,类似于这个。虽然我的故障排除已经结束(现在),但我仍然想知道是否有可能在其他引用的项目中使用断点。

标签: visual-studiovisual-studio-2019blazorvisual-studio-debuggingblazor-client-side

解决方案


有2个解决方案:

解决方案1:右键单击解决方案,选择Properties,选择,Common Properties选择,Multiple startup project选择操作Start,,,。像这样的东西Foo.ClientFoo.ServerFoo.Shared

在此处输入图像描述

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


推荐阅读