• 締切済み

C#で自作ライブラリの使用方法について

仮に、Nameと言う名前空間のClsと言うクラス内にMtdと言うメソッドが存在するライブラリを作成したとします。(Cls.dll) このライブラリをMainProgと言う別プログラムから使用したいのですが、ソリューションエクスプローラの参照設定でCls.dllを設定しても、MainProgのメソッド内の「Name.Cls.Mtd();」記述部分について 「名前'Name'は現在のコンテキスト内に存在しません」のエラーが出て、ライブラリが認識されません。 尚、その他の標準ライブラリは問題なく使えます。 何が間違っているのか教えて頂けないでしょうか。 宜しくお願いします。

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

ソリューションに自作ライブラリーのプロジェクトを追加して 参照設定をプロジェクトにしても現象は変わりませんか?

mark225
質問者

お礼

回答、有り難うございました。 ご教示頂いたとおりにしましたが結果は同じでした。 初めてなので、やり方が合っているか少々自信ないですが、ソリューションエクスプローラの表示は以下のとおりです。  1.MainProgにClsプロジェクトが追加されて、「2プロジェクト」となっています。  2.MainProgの参照設定にはClsが表示されています。 この状態で、MainProgのソースに「名前'UserLibraly'は現在のコンテキスト内に存在しません」のエラーが表示されます。 何か確認事項などありましたら再投稿して頂けると嬉しいです。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

『Name』という名前空間が悪さしていると思いますよ C#のWindowsFormアプリだと 単にNameとするとControl.Name を表すみたいです System.Windows.Forms.Form の Nameプロパティと混同してしまうようです コンソールアプリなら Nameと言う名前空間でも使えるようです DLLを追加してオブジェクトブラウザには表示されているのでしょうか?

mark225
質問者

お礼

早速の回答、有り難うございました。 「Name」ですが「UserLibraly」と「UserLibraly1」に変えてみましたが結果は同じでした。 それと試しに別のソリューションでもやってみましたが同じでした。 何なんでしょうねぇ。 >DLLを追加してオブジェクトブラウザには表示されているのでしょうか? > はい、ちゃんと表示されています。

回答No.1

名前空間が認識されない問題は、例えば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も同様だ。

mark225
質問者

お礼

早速の回答、有り難うございました。 でも、う~ん(汗) 私には難し過ぎる回答でして…正直なところ理解できないです(涙)。 紹介して頂いたリンク先を和訳して読んでみましたがギクシャクした日本語で何をすれば良いのか分かりませんでした。 もっと具体的な対処方法を提示して頂けると助かるのですが…。 どうぞ宜しくお願いします。

関連するQ&A

  • visualstudioでc#のdllができない

    visualstudio2010を使用しています。 dllの作成をしたいのですが、なぜか作られません。 どこに手順を書きますのでどこに間違いがあるか教えてください。 (1)作成したプロジェクトを開く (2)ファイルー新しいプロジェクトを選択 (3)クラスライブラリを選択 (4)ソリューション(S):ソリューションに追加を選択ーOKボタン (5)DLLの中を書く (6)参照設定を選択する (7)ソリューションのプロパティのビルドでフォルダを指定する。 (8)ビルドする(もちろん通る) しかし、DLLはどこにも見当たらない。 検索しても、クラスライブラリを選択すれば自動的にできると書いてあるので、困り果てています 機能はMEFを使用し、僕ではない人が作ったDLLがすでに追加されており、僕もDLLを追加したいのですが、なぜかDLLが作成されません。 詳しいかたよろしくおねがいします。

  • VB.NETでDLLを読み込ませる時にエラーがでる

    VB.NET DLLがついているプログラムで、他のパソコンで動作確認済みの物を頂いたのですが、動きません。 ■現象 (1)VisualStudio .Netでソースを開きます。 (2)ソリューションエクスプローラの参照設定から****.dllを削除します。 (3)メニューのプロジェクトで参照の追加を選択します。 (4)参照の追加画面でCOMタブを選択します。 (5)参照ボタンをクリックし、System32フォルダ内より****.dllを 選択します。 (6)「選択されたコンポーネント」のリストにに****.dllが存在することを 確認 (7)OKボタンをクリックします。←ここでエラーがでます ■エラー 『'C:\WINDOWS\system32\xxxxxx.dllへの参照を追加できませんでした。タイプライブラリを読み込めませんでした。タイプライブラリ/DLLの読み込みエラーです。』 どなたか教えてください><めちゃくちゃ困ってます

  • コンソールプログラムで使用するライブラリについて

    今まで疑問に感じつつないがしろにしていた部分なんですが、 例えばWin32APIを使用してプログラミングする時にコンパイラはリンクの際にwindowsのシステムフォルダ内にあるdllファイルを参照してリンクするんですよね(あってます?)?ではコンソールプログラム(dos上のプログラム)をリンクする際にはどうなるのでしょうか(例えばCの標準関数のライブラリはどこにあるのでしょうか?)? 私の予想では標準関数に関してはコンパイラが予め用意している静的ライブラリを使ってリンクしているんじゃないかと思うのですが実際どうなんでしょうか? 大した質問でもないのに長々とした文章になってしまいましたがよろしくお願いします。

  • C#でコンパイルできない

    Visual C# 2008 EXPRESS EDITONでコンソールアプリケーションを作成しています。 プログラム上の以下の行をコンパイルできません。 System.Windows.Forms.Clipboard.SetText(string); エラーメッセージは以下のとおりです。 型または名前空間名 'Windows' は名前空間 'System' に存在しません。アセンブリ参照が不足しています。 なお、フォームアプリケーションの作成においては、上記のエラーは発生しませんでした。参照ライブラリを加える必要があるのでしょうか?

  • VB2008:プロジェクト参照で名前空間が出てこない。

    VB2008:プロジェクト参照で名前空間が出てこない。 クラスライブラリを作ろうとプロジェクトC(ルート名前空間R)を作成しました。 別のプロジェクトAからCを参照しても、インテリセンスでR名前空間が出てきません。ビルドしてもダメでした。 オブジェクトブラウザにはRが表示されています。 プロジェクトCをビルドして、プロジェクトAからDLLを参照すれば問題は発生しません。 クラスライブラリも合わせて修正したいので、プロジェクト参照を使いたいのですが どのようにすれば良いのでしょうか? よろしくお願いします。

  • C++/CLIのDLLをC#で使う

    C++/CLIのDLLをC#で使う ソリューションの中にC++/CLIでクラスを作成し、出力がDLLのプロジェクトと、 C#でGUI画面の処理のプロジェクトがあります。 このときC#側でC++/CLI側で作ったDLLを使用したいのですが、やり方がわかりません。 DLL自体はC#のDebugフォルダに入っており、参照設定で読み込んでいます。 ご教授のほど、よろしくお願いいたします。

  • C#でSystem.IO.FileFormatEx

    VB2010で System.IO.FileFormatException をThrowしているコードがあります。 これをC#2010にコンバートしたのですが 上記箇所に於いて 型または名前空間名 'FileFormatException' は名前空間 'System.IO' に存在しません。アセンブリ参照が不足しています。 というエラーが出てしまいます。 何を参照設定すればよいのでしょうか。 またはこのような処理は不可なのでしょうか。

  • Selenium Type Library参照設定

    Selenium Type Libraryを参照設定すると「DLL 読み込み時のエラーです」 https://lil.la/archives/3436 のページに記された手順でSeleniumBasicやChrome Driverをインストールし、VBEから「Selenium Type Library」を参照設定すると「DLL 読み込み時のエラーです」と表示されます。同じことを別のPCで試したところ、そちらではエラーが発生せず、実際にChromeからのWebスクレイピングに成功しました。 Excel自体の再インストールが必要なのでしょうか?

  • vb2012 参照設定しているものを見るには?

    vb2010の時は、ソリューションエクスプローラーで参照設定フォルダがあり、 そこを開くと参照設定されている一覧が見れたのですが、 vb2012では参照設定フォルダが見当たりません。 見れないのでしょうか?

  • VB.Netでのエラーについて

    こんにちわ。 いまVB.Netでプログラミングしている者です。 あるVBプロジェクトファイル(aaaa.dllとします)で ある.dllファイル(bbbb.dllとします)を参照設定しています。 そこでこのVBプロジェクトファイルをビルドすると, このVBプロジェクトファイル内のあるVBファイルの行で, 「Public Function ~」はプロジェクトbbbb.dllで宣言されていますが,プロジェクトaaaa.dllによって参照されていません。」 というコンパイルエラーになってしまいます。 ソリューションエクスプローラで見たところ, 上記のVBプロジェクトファイルの参照設定で,bbbb.dllはエラー表示されていません。 念のためbbbb.dllを一旦削除して,最新のbbbb.dllを改めて「参照追加」したのですが,状況が変わりません。 このエラーは何が原因なのでしょうか? 教えてください。よろしくお願いします。