0

Windows マシンで Visual Studio 2015 を使用して、(Raspbian Jessie を実行している) Raspberry Pi 3 で C# .NET 4.5 WinForms アプリケーションをリモートでデバッグしようとしています。

私が理解しているように、これにはMonoRemoteDebuggerを使用できます。Visual Studio 拡張機能をインストールし、Pi でサーバー プログラムを実行しましたが、アプリケーションをデバッグしようとすると、MonoRemoteDebugger.Server.exe プログラムに pdb2mdb.exe プログラムからのエラーが表示されます。エラーは次のとおりです。

致命的なエラー: Microsoft.Cci.Pdb.PdbDebugException: 不明なカスタム メタデータ項目の種類: 6 at Microsoft.Cci.Pdb.PdbFunction.ReadCustomMetadata (Microsoft.Cci.Pdb.BitAccess ビット) [0x00000] in :0
Microsoft.Cci.Pdb.PdbFunction..ctor (System.String モジュール、ManProcSym proc、Microsoft.Cci.Pdb.BitAccess ビット) [0x00000] で:0 Microsoft.Cci.Pdb.PdbFunction.LoadManagedFunctions (System.String モジュール、Microsoft.Cci.Pdb.BitAccess ビット、UInt32 制限、Boolean readStrings) [0x00000] in :0 at Microsoft.Cci.Pdb.PdbFile.LoadFuncsFromDbiModule (Microsoft.Cci.Pdb.BitAccess ビット、Microsoft.Cci.Pdb.DbiModuleInfo 情報、Microsoft.Cci.Pdb.IntHashTable 名、System.Collections.ArrayList funcList、ブール値の readStrings、Microsoft.Cci.Pdb.MsfDirectory dir、System.Collections.Generic.Dictionary`2 nameIndex、Microsoft.Cci.Pdb.PdbReader リーダー) [ 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 アセンブリ、System.IO.Stream pdb、Mono.CompilerServices.SymbolWriter.MonoSymbolWriter mdb) [0x00000] in :0

Piでコマンド「pdb2mdb MyProgram.exe」を実行しようとしましたが、同じエラーが発生するため、問題はpdb2mdb.exeプログラムにあるようです。掘り下げてみると、これはバージョン 0.9.6で修正された Mono.Cecil のバグであることがわかりましたが、Raspian Jessie で利用可能な最新バージョンは 0.9.5 のようです。

pdb2mdb.exe をhere のものに置き換えてみましたが、エラーは次のように変わります。

未処理の例外: System.TypeLoadException: アセンブリ 'pdb2mdb、Version=0.0.0.0、Culture=neutral、PublicKeyToken=null' から型 'Mono.Cecil.AssemblyDefinition' を読み込めませんでした。[エラー] 致命的な未処理の例外: System.TypeLoadException: アセンブリ 'pdb2mdb、バージョン = 0.0.0.0、カルチャ = ニュートラル、PublicKeyToken = null' から型 'Mono.Cecil.AssemblyDefinition' を読み込めませんでした。

Piで新しいMono.Cecilバージョンを取得しようとする解決策はありますか? もしそうなら、どうすればそれを実現でき、pdb2mdb.exe が新しいバージョンを参照していることを確認できますか?

4

1 に答える 1

1

問題を解決しました!

最初の問題は pdb2mdb.exe にありました。次のコマンドを使用して最新の mono パッケージを取得するには、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 は次のエラーを表示していました。

プログラム 'C:\Test1\Test1.exe' を開始できません。

見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。

これを回避するために、MonoRemoteDebugger 1.0.5 Visual Studio 拡張機能を削除し、この問題のないバージョン 1.0.4をインストールしました。

于 2016-04-28T00:17:25.220 に答える