- 締切済み
C#で自作ライブラリの使用方法について
仮に、Nameと言う名前空間のClsと言うクラス内にMtdと言うメソッドが存在するライブラリを作成したとします。(Cls.dll) このライブラリをMainProgと言う別プログラムから使用したいのですが、ソリューションエクスプローラの参照設定でCls.dllを設定しても、MainProgのメソッド内の「Name.Cls.Mtd();」記述部分について 「名前'Name'は現在のコンテキスト内に存在しません」のエラーが出て、ライブラリが認識されません。 尚、その他の標準ライブラリは問題なく使えます。 何が間違っているのか教えて頂けないでしょうか。 宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
ソリューションに自作ライブラリーのプロジェクトを追加して 参照設定をプロジェクトにしても現象は変わりませんか?
- redfox63
- ベストアンサー率71% (1325/1856)
『Name』という名前空間が悪さしていると思いますよ C#のWindowsFormアプリだと 単にNameとするとControl.Name を表すみたいです System.Windows.Forms.Form の Nameプロパティと混同してしまうようです コンソールアプリなら Nameと言う名前空間でも使えるようです DLLを追加してオブジェクトブラウザには表示されているのでしょうか?
お礼
早速の回答、有り難うございました。 「Name」ですが「UserLibraly」と「UserLibraly1」に変えてみましたが結果は同じでした。 それと試しに別のソリューションでもやってみましたが同じでした。 何なんでしょうねぇ。 >DLLを追加してオブジェクトブラウザには表示されているのでしょうか? > はい、ちゃんと表示されています。
- himajin100000
- ベストアンサー率54% (1660/3060)
名前空間が認識されない問題は、例えばstackoverflow.comでも似たような事例が報告されている。もしこれと同じ件なら http://stackoverflow.com/questions/4228992/namespace-not-recognized-even-though-it-is-there ターゲットフレームワーク(だか対象フレームワーク)だかが、.NET Framework 4 Client Profileっていう、サブセットになっているけれど、参照している自作ライブラリが、Fullの方にしか含まれていないライブラリを参照してしまっているために、名前空間が認識されず、それを変更したら、治った、というケースがあった。エラーが不親切だろ、って不満も書かれているね。 おそらくstackoverflow例示のコードはusingを使っていて次に名前空間しか来ないから、「型や名前空間などない」になっているのであって、質問者のコードの部分だと文法上Nameという変数名かもしれないので、「コンテキストに存在しません」なんだと思う ##俺は、MonoDevelop使っているから、実際にインストールしてないんだ。そんなわけで何て書いてあるかは知らんよ。 ##昔(今もか?)、Real PlayerだのQuickTimeだのが余計なソフトを入れてこようとしたり、 ##そうでなくても、アンインストールが簡単じゃなかったり、ってことがあって ##Adobe Readerとか、Windows Live Mailとか、大手のソフトにあまりいい印象を持ってないためにインストールしてない。Visual C# Expressも同様だ。
お礼
早速の回答、有り難うございました。 でも、う~ん(汗) 私には難し過ぎる回答でして…正直なところ理解できないです(涙)。 紹介して頂いたリンク先を和訳して読んでみましたがギクシャクした日本語で何をすれば良いのか分かりませんでした。 もっと具体的な対処方法を提示して頂けると助かるのですが…。 どうぞ宜しくお願いします。
お礼
回答、有り難うございました。 ご教示頂いたとおりにしましたが結果は同じでした。 初めてなので、やり方が合っているか少々自信ないですが、ソリューションエクスプローラの表示は以下のとおりです。 1.MainProgにClsプロジェクトが追加されて、「2プロジェクト」となっています。 2.MainProgの参照設定にはClsが表示されています。 この状態で、MainProgのソースに「名前'UserLibraly'は現在のコンテキスト内に存在しません」のエラーが表示されます。 何か確認事項などありましたら再投稿して頂けると嬉しいです。