Written By: 川俣 晶
非常につまらない話なのですが。
1つだけ、「罠」になり得る問題があるのでメモっておきます。
複数のアセンブリから構成された.NET Frameworkによるプログラムがあるとします。
あるアセンブリの中で、主に自分が置かれたパス名を知りたいという理由で、そのアセンブリのファイル名のフルパスを取得したいとします。(実行開始された実行ファイルのフルパスではなく、実行中のDLLのフルパス)
上記の条件を満たすフルパスを取得する式は以下のようになります。
(Managed C++で書かれています)
System::Reflection::Assembly::GetExecutingAssembly()->GetModules()[0]->FullyQualifiedName
ただし、アセンブリにモジュールが1つという条件に適合しない場合、意図せざる結果を返す可能性もあり得ます。おそらく、通常は問題ないでしょう。
なに? アセンブリとモジュールの区別が付かない? それは困りましたね……。いや私も資料をきちんと見ないと正確なところは言えないのだけれど (汗。
問題は、FullyQualifiedNameという名前にあります。
ファイルのパスならPathという言葉が含まれていても良さそうですが、そうではありません。うっかり、ファイルを示すパス名ではなく、何か別の名前であると誤解して読み飛ばすと、永遠に意図したプロパティに辿り着けない悪夢に陥る可能性があります。
.NET Frameworkで作成されたa.exeファイルと同じディレクトリに何らかのファイル、もしくは別のexeファイル(b.exeとしましょう)があったとします。このa.exeから子プロセスとして、b.exeを起動させたい場合、a.exeのディレクトリにパスが通っていなく、起動ディレクトリをa.exeがあるフォルダ以外に設定していた場合、起動できない可能性があります。 続きを読む
[メッセージ送信フォームを利用する]
メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。
この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。
管理者: 川俣 晶
Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.