SIN@SAPPOROWORKSの覚書

C#を中心に、夜な夜な試行錯誤したコードの記録です。

publicメソッドの無いDLLを参照すると、分かりにくいエラーが出る (C#)

テスト用のプロジェクト(FtpServerTest)を作成して、テストしたいDLL(FtpServer)を参照設定で追加しました。

次に、usingで追加しようとしたときに、エラーが発生しました。


オブジェクトブラウザで見てみると、名前空間さえ表示されないので、ちょっと焦ってしまいました。

いろいろ試した結果、原因は、「参照するDLLの中にpublicなメソッドが1つもない場合、名前空間さえ認識されない」という事のようです。

テストしたいクラスを公開(public)し、

■class CurrentDirは、非公開(private)になっている

■class CurrentDirを公開(public)に変更する

コンパイルすると、テスト用プロジェクト側のエラーは消え、オブジェクトブラウザでも無事表示されるようになりました。

■オブジェクトブラウザで名前空間(FtpServer)と公開メソッド(CurrentDir)が表示されている

もし、オブジェクトブラウザの表示が、階層下にメソッドが1つもない名前空間だけの表示だったら、公開メソッドが無い事にすぐ気付いたと思うのですが、名前空間さえ表示されず、usingに足そうとしても、インテリセンスに現れないので、すっかり嵌ってしまいました。

■インテリセンスで表示されない

■インテリセンスで選択できる