如何使用 Visual Studio 2015 在 Raspberry Pi 3 上远程调试 C# .NET 4.5 WinForms 应用程序?

How can I remotely debug a C# .NET 4.5 WinForms application on a Raspberry Pi 3 using Visual Studio 2015?

我正在尝试使用 Visual Studio 2015 在 Raspberry Pi 3(运行ning Raspbian Jessie)上远程调试 C# .NET 4.5 WinForms 应用程序=38=]机.

据我了解,我可以为此使用 MonoRemoteDebugger。我已经在 Pi 上安装了 Visual Studio 扩展和 运行 服务器程序,但是当我尝试调试应用程序时 MonoRemoteDebugger.Server.exe 程序显示来自 pdb2mdb.exe 的错误程序。这是错误:

Fatal error: Microsoft.Cci.Pdb.PdbDebugException: Unknown custom metadata item kind: 6 at Microsoft.Cci.Pdb.PdbFunction.ReadCustomMetadata (Microsoft.Cci.Pdb.BitAccess bits) [0x00000] in :0
at Microsoft.Cci.Pdb.PdbFunction..ctor (System.String module, ManProcSym proc, Microsoft.Cci.Pdb.BitAccess bits) [0x00000] in :0 at Microsoft.Cci.Pdb.PdbFunction.LoadManagedFunctions (System.String module, Microsoft.Cci.Pdb.BitAccess bits, UInt32 limit, Boolean readStrings) [0x00000] in :0 at Microsoft.Cci.Pdb.PdbFile.LoadFuncsFromDbiModule (Microsoft.Cci.Pdb.BitAccess bits, Microsoft.Cci.Pdb.DbiModuleInfo info, Microsoft.Cci.Pdb.IntHashTable names, System.Collections.ArrayList funcList, Boolean readStrings, Microsoft.Cci.Pdb.MsfDirectory dir, System.Collections.Generic.Dictionary`2 nameIndex, Microsoft.Cci.Pdb.PdbReader reader) [0x00000] in :0 at Microsoft.Cci.Pdb.PdbFile.LoadFunctions (System.IO.Stream read, Microsoft.Cci.Pdb.BitAccess bits, Boolean readAllStrings) [0x00000] in :0 at Microsoft.Cci.Pdb.PdbFile.LoadFunctions (System.IO.Stream read, Boolean readAllStrings) [0x00000] in :0 at Pdb2Mdb.Driver.Convert (Mono.Cecil.AssemblyDefinition assembly, System.IO.Stream pdb, Mono.CompilerServices.SymbolWriter.MonoSymbolWriter mdb) [0x00000] in :0

我已经在 Pi 上尝试 运行ning 命令 "pdb2mdb MyProgram.exe",但它产生了同样的错误,所以看来问题出在 pdb2mdb.exe 程序上。通过一些挖掘,我发现这似乎是 Mono.Cecil 中的一个错误,其中 was fixed 在版本 0.9.6 中,但似乎可用于 Raspian Jessie 的最新版本是 0.9.5.

我尝试将 pdb2mdb.exe 替换为 the one from here,然后错误变为:

Unhandled Exception: System.TypeLoadException: Could not load type 'Mono.Cecil.AssemblyDefinition' from assembly 'pdb2mdb, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'. [ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: Could not load type 'Mono.Cecil.AssemblyDefinition' from assembly 'pdb2mdb, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.

尝试在 Pi 上获得更新的 Mono.Cecil 版本是解决方案吗?如果是这样,我将如何处理,以及确保 pdb2mdb.exe 引用较新的版本?

我已经解决了问题!

第一期是 pdb2mdb.exe。来自 mono-project.com 的 wheezy 包源必须用于使用这些命令获取最新的单声道包:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update
sudo apt-get install mono-complete mono-devel

之后,Visual Studio 中的 MonoRemoteDebugger 显示以下错误:

Unable to start program 'C:\Test1\Test1.exe'.

The located assembly's manifest definition does not match the assembly reference.

为了解决这个问题,我删除了 MonoRemoteDebugger 1.0.5 Visual Studio 扩展并安装了没有这个问题的 version 1.0.4