C# .NETの困ったところ

昨日、設定ファイルについて書いた。

また困ったところが。

デバッグ中は、というか開発中は基本的にビルドターゲットを「デバッグ」にしておいてデバッグシンボルを含んだ実行ファイルをビルドしておき、それをデバッガ上で実行しようが単体で実行しようがこれを使うのが普通だと思っていた。ビルドをメニューから選べばそうなると思っていた。

でも、C#では違っていた。

今日、修正をした。悩みどころは通信部分で、単純な同期処理で動作確認をした後に、UIを固まらせないために、マルチスレッドや非同期通信を試しているため、頻繁に書きなおしている。ただ、必ずしもデバッガ上で動かす必要もないレベルでもある。

で、メニューからビルド、としたらで「Debug」ディレクトリの下の実行ファイルが更新されていない。もしや、と思ってみると「Release」の下が更新されている。アプリケーションの設定を見ると出力先は「Release」なので間違ってはいない。

どうやら、デバッグする時(デバッガを起動する時)にデバッグの実行ファイルを作り、通常ビルドではリリースの実行ファイルを作るようなのだ。そして、設定ファイルは実行ファイル名からディレクトリを掘るのだが、単体起動では、

hogehote.exe———–

となるところ、デバッガ上で実行すると、

hogehoge.vshost.exe—————

というディレクトリを掘るので絶対に同じにならない。

さらに、今日、試しにリリース版モジュールを実行したところ、ユーザ設定ファイルが存在しない時の動きで起動した。ということは、後ろにつくハッシュらしき値が、デバッグ版実行ファイルとリリース版実行ファイルで異なるということだ。

配布するときはリリース版しかリリースしないはずなので問題ないだろうが、開発者的には両方動かしておきたいから非常に気持ちが悪い。

せめて、普通の書き方したときに、実行ファイル名で一意に決まるディレクトリにしてくれると嬉しいのだけど、ディレクトリの取得方法は見つかったけど、決め方がわからないんだよなぁ?

困った。

コメント