Visual studio 从VisualStudio进行Linux.NET远程调试
我想从VisualStudio远程调试运行在Linux上的C#控制台应用程序。以下是我到目前为止的发现: Mono运行时实现了一个调试接口,允许 调试程序和IDE来调试托管代码。这就是所谓的软 MonoDevelop、Xamarin Studio和 Visual Studio(安装了适当的插件时)以及 命令行SDB客户端 Mono提供了一个API来与调试器通信并创建 通过Mono.Debugger.Soft.dll程序集拥有调试UI 下面的页面讨论了当前MonoVS调试器实现的一些问题,但我对它们都很满意 该页面还链接到MonoVS的入门指南: 其中包含MonoTools的下载链接: 但是,下载链接现在重定向到: 在那里我可以下载Xamarin Studio入门版。单击定价链接,我发现我至少需要Visual Studio支持的Business edition,每年999美元。不,谢谢 这就是我被困的地方。我的环境的一些细节: 发展环境:Visual studio 从VisualStudio进行Linux.NET远程调试,visual-studio,mono,raspberry-pi,remote-debugging,raspbian,Visual Studio,Mono,Raspberry Pi,Remote Debugging,Raspbian,我想从VisualStudio远程调试运行在Linux上的C#控制台应用程序。以下是我到目前为止的发现: Mono运行时实现了一个调试接口,允许 调试程序和IDE来调试托管代码。这就是所谓的软 MonoDevelop、Xamarin Studio和 Visual Studio(安装了适当的插件时)以及 命令行SDB客户端 Mono提供了一个API来与调试器通信并创建 通过Mono.Debugger.Soft.dll程序集拥有调试UI 下面的页面讨论了当前MonoVS调试器实现的一些问题,但我对
- Windows 7 64位
- Visual Studio Pro 2013(如果效果更好,可能使用2010)
- 覆盆子皮
- 拉斯宾喘息
- Mono 3.2.8
- 通过SSH运行控制台应用程序
- 下载并安装,以及。Xamarin Studio需要.NET 4.5,但GTK需要.NET 4.6。我使用了Xamarin Studio版本6.1.2(build 44)和GTK版本2.12.44
- 我在不同于VS2015的虚拟机上安装了Xamarin Studio,因此我还需要下载并安装和
- 创建一个环境变量
(我的电脑->属性->高级系统设置->环境变量)MONODEVELOP\u SDB\u TEST=1
- 启动Xamarin工作室。如果未显示任何窗口,请检查文件夹
中的日志文件,查看失败的原因%localappdata%\XamarinStudio-6.0\Logs
- 我在Visual Studio 2015中创建了一个.NET 4.6控制台应用程序,并添加了NuGet包Mono.nonofficial.pdb2mdb,我使用的是版本4.2.3.4。包Mono.pdb2mdb版本0.1.0.20130128似乎不适用于VS2015生成的程序集(
)PdbDebugException:Unknown custom metadata item kind:6
- 将.sln或.csproj文件从Visual Studio加载到Xamarin Studio。构建解决方案并使用NuGet packages文件夹中的pdb2mdb工具创建.mdb文件:
pdb2mdb MyProgram.exe
- 我曾经将MyProgram.exe和MyProgram.exe.mdb复制到我的Raspberry Pi
- 我使用SSH登录并在Pi上安装了Mono 3.2.8版:
sudo apt get install Mono complete
- 使用调试器标志启动Mono运行时:
。这将启动程序,但在Xamarin Studio调试器连接之前暂停执行Mono--debug--debugger agent=transport=dt_socket,地址=0.0.0.0:12345,服务器=y/path/to/MyProgram.exe
- 在Xamarin Studio中设置断点并选择菜单项
,然后选择Run->Run with->Custom Configuration…
。单击调试Run Action=Debug-Custom Command Mono Soft Debugger
- 在
和IP
字段中填写linux系统的IP地址和Mono命令行中指定的端口12345。单击Port
,执行将开始,并在设置的断点处停止Connect
可以设置条件断点、进入/退出/覆盖代码、监视原语和对象等,而且速度也相当快。我宁愿直接从Visual Studio进行调试,但这似乎是一个完全可行的解决方案。在此基础上,我成功地在运行Raspbian Jessie Lite(2017-04-10)的Raspberry Pi Zero W上与VS2015合作。诀窍是安装3.2.8之后的Mono版本:
- 安装Visual Studio扩展,我使用的是1.2.0版
- 在Visual Studio中创建.NET 4.6控制台应用程序
- 如果Raspberry Pi上安装了较旧的Mono版本,请使用以下命令将其删除: sudo-apt-get-purge-mono-complete sudo易于自动删除
- 安装Mono 4.0.2版: sudo apt key adv--keyserverhkp://keyserver.ubuntu.com:80 --记录键3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo“deb jessie-mono4 main”| sudo tee-a/etc/apt/sources.list sudoapt获得更新 sudo-apt-get-install-mono-complete
- 安装MonoRemoteDebugger服务器: wget 解压-d MonoRemoteDebugger.Server MonoRemoteDebugger.Server.zip
- 启动MonoRemoteDebugger服务器: mono MonoRemoteDebugger.Server/MonoRemoteDebugger.Server.exe
- 在Visual Studio中设置断点,并在Visual Studio中选择菜单项
MonoRemoteDebugger->Debug with Mono(remote)
- 将远程IP设置为树莓Pi a的IP地址
ssh pi@192.168.0.xxx wget https://download.visualstudio.microsoft.com/download/pr/c11e9248-404f-4e5b-bd99-175079419d6f/83902a43e06f9fb4e45a4c6a6d5afc0b/dotnet-runtime-3.1.3-linux-arm.tar.gz sudo mkdir /opt/dotnet sudo tar zxf dotnet-runtime-3.1.3-linux-arm.tar.gz -C /opt/dotnet sudo ln -s /opt/dotnet/dotnet /usr/bin/dotnet
export DOTNET_ROOT=/opt/dotnet
dotnet --info
cd bin\Debug\netcoreapp3.1 pscp -pw <password> *.dll *.pdb *.runtimeconfig.json pi@192.168.0.xxx:/home/pi
ssh pi@192.168.0.xxx dotnet /home/pi/MyProgram.dll
- 您需要的解决方案将于今年推出。开发者“承诺”我们可以部署到任何Mono设备上,并在Visual Studio(2010至2015年)内对其进行调试。我知道这是一个旧线程,但以防任何人(如我)尚未找到解决方案,在今天的搜索中,我发现了这个Visual Studio 2015扩展,它的工作非常有魅力:
请参阅以修复VS2015更新2上与Xamarin VS extension的冲突
我希望有帮助
祝您调试愉快,感谢开发人员!:) 我发现了如何使用Xamarin Studio从Windows在Linux上执行远程调试的解释,Xamarin Studio现在是免费的,除了iOS和Android开发。我在运行Raspbian Jessie Lite(2017-04-10)的Raspberry Pi Zero W上测试时遇到了一些问题,我对这些问题进行了修复,对其进行了扩展