自作のdllをusing(参照で追加)で呼び出していますが、
このファイルがない場合、当該ソースの「自作dllファイルが存在しません」のメッセージが表示されません(★のルートを通りません)。
存在する場合は、きちんと☆ルートを通ります。
イベントビューワを見たところ、System.IO.FileNotFoundException がログされていました。
異常終了せずに、「自作dllファイルが存在しません」のメッセージを表示するにはどうすればいいでしょうか。
なにかアドバイスをいただけないでしょうか。
よろしくお願いいたします。
using 自作dll; namespace test { class test { static void Main(string[] args) { string fileName = "自作dll"; if (System.IO.File.Exists(fileName)) { MessageBox.Show("'" + fileName + "'は存在します。");☆ } else { MessageBox.Show("'" + fileName + "'は存在しません。");★ } } } }
エラーにならないとはどうなるんでしょうか
失礼しました。
記載のソースで、自作dllは存在しません。が表示されない。ということになります。
よろしくお願いいたします。
表示されずにどういう動作をするんでしょうか
何も表示されません。プログラムは何事もなかったように終了します。
本当に終了していますか? そもそも起動していないのでは? ただ、usingとしているだけで使ってはいなさそうなので「存在しません」になりそうですが。そのDLL(.NET アセンブリですよね?)は参照で追加していますか?
dodox86さん
ありがとうございます(前にもお世話になった記憶が)
見た目は何も起きないですが、そう答えてしまいましたが、
イベントビューワを見たところ、System.IO.FileNotFoundException がログされていましたので異常終了ですね。→y_waiwaiさん失礼しました。
自作dllは.NET アセンブリで、参照で追加しています。
よろしくお願いいたします。
では、そういうことですね。参照に追加した自作.dllが見つからないのでロードができず、起動できない、しかして何も表示されずに終わる、と言う流れです。
私の質問が悪いですね。
異常終了せずに、エラーメッセージを表示したいのです。
catch で「System.IO.FileNotFoundException」をしても引っかからなかったので。。
ですから、そのプログラム自体が起動できないのです。言うなれば.NETサブシステムのローダーがsparcさんのプログラムを起動できないのです。実行プログラムを実行する際の体裁が整っていないので、ソースコードの話の前の段階です。そうしないためには動的ロードをしないとダメです。(それがお求めの答えとは思えませんが)
なるほど!すごくよくわかりました。
プログラムの起動に必要なファイルがないからプログラムが起動できない。
なので、そのプログラム上でエラーなど出せるはずがない。ということですね。
全く勘違いのことで悩んでいたことになりますね。
お言葉もありません、気づかせてくれてありがとうございます。
そういうことです。

こういう事をやりたいのかな?
https://qiita.com/rita0222/items/609583c31cb7f0132086
radianさん、ありがとうございます。
はい、ご紹介いただいたようなことを実施するべきだったのですね。
私は一般的なファイルの存在チェックと参照dllの存在チェックを同じに考えてしまったのが間違いでした。
多分dodoxさんの動的ロードしないとダメじゃない?というのもこういうことだと思います。
アドバイスありがとうございました。

回答1件
あなたの回答
tips
プレビュー