開発が止まってるものとか、ソースコードが配布されていない物、とりあえず使ってみたいだけって物で実行時に PInvokeStackImbalance が出たときの回避方法。
そもそも PInvokeStackImbalance を出さないようにするには、MSDNで検索で。
まず,どうも vshost を有効にしていると 1 回目のデバッグ実行のみしか効果が無さそうなので,とりあえず今のところ vshost は諦める他無さそう.というわけでプロジェクト設定の「デバッグ」の項目から vshost を有効にするのチェックは外しておく.ここから先は 3 通り.
方法1 レジストリキーを使う方法
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework" に "MDA" という値を作って "0" を設定すると MDA が完全に無効化される.
方法2 環境変数を使う方法
"COMPLUS_MDA" という環境変数に "0" を設定すると MDA が完全に無効化される.
方法3 コンフィグファイルを使う方法
"COMPLUS_MDA" という環境変数に "1" を設定するとデバッガはコンフィグファイルを参照するようになる.次に実行ファイルと同じフォルダに "(アプリケーション名.exe).mda.config" というファイルを作成し,次の内容をセット.FDBK38347 の Microsoft からの書き込みにある通り,MDA を完全に殺してしまう必要はなくて,pInvokeStackImbalance のみを無効化すれば今回の件については十分な模様.
<?xml version="1.0" encoding="utf-8" ?>
<mdaConfig>
<assistants>
<pInvokeStackImbalance enable="false" >
</assistants>
</mdaConfig>