publicメソッドの無いDLLを参照すると、分かりにくいエラーが出る (C#)
テスト用のプロジェクト(FtpServerTest)を作成して、テストしたいDLL(FtpServer)を参照設定で追加しました。
次に、usingで追加しようとしたときに、エラーが発生しました。
オブジェクトブラウザで見てみると、名前空間さえ表示されないので、ちょっと焦ってしまいました。
いろいろ試した結果、原因は、「参照するDLLの中にpublicなメソッドが1つもない場合、名前空間さえ認識されない」という事のようです。
テストしたいクラスを公開(public)し、
■class CurrentDirは、非公開(private)になっている
■class CurrentDirを公開(public)に変更する
再コンパイルすると、テスト用プロジェクト側のエラーは消え、オブジェクトブラウザでも無事表示されるようになりました。
■オブジェクトブラウザで名前空間(FtpServer)と公開メソッド(CurrentDir)が表示されている
もし、オブジェクトブラウザの表示が、階層下にメソッドが1つもない名前空間だけの表示だったら、公開メソッドが無い事にすぐ気付いたと思うのですが、名前空間さえ表示されず、usingに足そうとしても、インテリセンスに現れないので、すっかり嵌ってしまいました。
■インテリセンスで表示されない
■インテリセンスで選択できる