将调试器附加到在Linux上的.NET Core中运行的远程进程的Visual Studio扩展

问题描述 投票:0回答:1

我正在使用Visual Studio 2019开发在嵌入式Linux上运行的.NET Core 3应用程序。我能够在Visual Studio 2019中构建代码。如果我将二进制文件手动复制到Linux计算机,然后启动在该计算机上运行的应用程序,则可以将Visual Studio调试器通过Linux中的SSH附加到远程进程,并调试应用。确实可以,但是部署,启动它并为每个调试会话手动附加调试器是很繁琐的。我确实在Visual Studio Code中有一个可以正常工作的脚本,但是我想使用Visual Studio Professional。

我正在尝试编写Visual Studio扩展,以便可以在Visual Studio中按一个键来构建,部署,启动应用程序,然后将其连接到调试器。然后,我将与我的团队共享扩展。除了附加调试器,它几乎可以正常工作。

在扩展名中,我能够列出在Linux计算机上运行的进程,并使用以下代码选择我的应用程序:

EnvDTE100.Debugger5 debugger = (EnvDTE100.Debugger5)dte.Debugger;
EnvDTE80.Transport transport = debugger.Transports.Item("SSH");
EnvDTE80.Engine engine = transport.Engines.Item("Managed (.NET Core for Unix)");
EnvDTE80.Process2 process = (EnvDTE80.Process2)debugger.GetProcesses(transport, "192.168.11.1").Item("app");
process.Attach2(debugger);

有两个问题:

  1. 对GetProcesses()的调用将打开一个对话框,在该对话框中,我需要输入Linux用户名并按Enter,如何在代码中指定用户名以避免出现该对话框?
  2. 即使选定的进程看起来像正确的进程(如果运行ps命令,process.ProcessID匹配我在Linux中看到的进程),但在调用Attach2()时会出现异常。异常消息是“来自HRESULT的异常:0x8971001E”

我觉得我真的很想让它开始工作,关于完成它的任何建议?

linux visual-studio .net-core vsix
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.