本サイトでは、アフィリエイト広告およびGoogleアドセンスを利用しています。

.Net Core3.1(WPF) + ネイティブDLL でデバッグできない

.Net Core でもバージョン 3.0 以降で WPF を使用した GUI アプリケーションを作ることが出来るようになりました。これと C/C++ で作成したネイティブの DLL を組み合わせてアプリケーションを作ろうとしたのですが、今回のタイトルにある課題に出遭いました。

実行は出来る

C# 部分のデバッグ実行は問題なく出来ます。また、 DLL 部分の実行も問題なく出来ます。

しかし、C# の部分と、 DLL の中 (C/C++) のデバッグを同時にしようとして、プロジェクトの設定を変更したときに、デバッグ実行が出来なくなるといった症状があります。

「ネイティブコードのデバッグを有効にする」これをONの状態にすると、デバッグ実行開始時点で各シンボルをロードする段階で進行停止の状態になりました。

この問題を調べてみたところ GitHub に Issue があり、現時点では 16.x のマイルストーンには入っているようなので、いつか修正はされるのではないかと思っています。

Enabling native code debugging on a .net core 3.1 project doesn't start correctly · Issue #6112 · dotnet/project-system
Visual Studio Version: Microsoft Visual Studio Enterprise 2019 Version 16.5.4 Summary: I created a WPF project in .net core 3.1 that used a native component thr...

対策案 (解決しません)

現時点でどうにかしようとすると、C#とC/C++部分は別々にデバッグするしかなさそうです。
WPF 部分をデバッグ実行開始した場合には、 DLL 部分をデバッグしようとして別の Visual Studio を用いてプロセスにアタッチすることも出来ません。既にデバッガがアタッチ済みというエラーが出ます。

WPF 部分をデバッグ無し実行して、そのときには C/C++ プロジェクトからアタッチが可能なので、それでのデバッグはできます。

どちらにせよ、スムーズなデバッグ作業とはいかないため、なかなか扱いづらいですね。早期に解決を期待しつつ、 .Net framework 4.8 を選択して開発をしようと思います。 .Net framework 4.8 なら、このような問題は起こりませんでした。

プログラミング
すらりんをフォローする
すらりん日記
タイトルとURLをコピーしました