- - PR -
複数クラスをDLL化(クラスライブラリ)
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-06-28 23:37
まことにありがとうございます。
Visual Studio 2003(Pro)を使っております。 単一クラスでは、他を参照している箇所をコメント化して外すとできます。 名前空間は下記のように1つのディレクトリの中だけで使ってます。 深山さんのおっしゃる1〜3の手順で、下記の例でclsA〜clsIまで行いましたが、 ビルドすると、"〜のメンバではありません"、"〜は定義されてません" のエラーがでます。 このsrcディレクトリ以下はシステムの一部で正常に使われているのですが、この部分のDLL化をしたいと思っています。 やはり、まとめて一発ではなく、エラーを1つ1つ参照など解きながらやるしかないのでしょうか?(実際は数10個のファイルがあります。) src ├─bin ├─Com │ └─bin │ └clsA.vb(Namespace Com) │ └clsB.vb(Namespace Com) │ └clsC.vb(Namespace Com) │ ├─Design │ └clsD.vb │ └clsE.vb │ └clsF.vb │ └─Tool └clsG.vb └clsH.vb └clsI.vb [ メッセージ編集済み 編集者: tamao30 編集日時 2006-06-28 23:39 ] | ||||||||||||||||
|
投稿日時: 2006-06-29 00:09
1 つのアセンブリ (DLL) にしたいのでしょうか? それとも、複数個 (この名前空間の単位) のアセンブリにしたいのでしょうか? ソリューションとプロジェクトの構成や配置関係はどうなっているのでしょうか?
? 別にどちらの方法でも正しく参照さえしていれば、普通にできますよね。 ソリューションの構成 (プロジェクトの構成) が不明なので、具体的にどうとは言えませんが。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2006-06-29 00:32
べるさんや皆さんの発言のように名前空間の問題のように思えたので、
とりあえず、サンプルを書きます。 見当違いならごめんなさいm(__)m
上記のコードは、Class2が名前空間ComのClass1のインスタンスを生成し、Class1がClass3のインスタンスを生成しています。 名前空間が違う場合は、Importsで名前空間を参照できるように宣言してください。 特に名前空間を指定していない場合は、名前空間はルート名前空間になります。 #たとえクラスのファイルを配置しているフォルダが違っていても、名前空間が同じなら、普通に参照できます。
皆さんが発言しているように、参照関係を確認してください。 | ||||||||||||||||
|
投稿日時: 2006-06-29 00:43
あれれ? 私だけ 「流れ」 から取り残されているんでしょうか... 複数のアセンブリであれば、依存関係の階層さえ守れば普通にできますし、 単一のアセンブリであれば、依存関係は無関係なので、より容易くできると思っているのですが... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||
|
投稿日時: 2006-06-29 01:27
じゃんぬねっとさんすみません。
1.新規作成のプロジェクトからクラスライブラリを選択 2.概存項目の追加からクラスファイルを追加 という方法で試しておりますが、 単一のアセンブリとは、クラスを1つの.vbファイルにまとめて書いて、クラスライブラリに追加するということでしょうか? また複数のアセンブリで依存関係の階層さえ守るようにするには、[概存項目の追加]で複数の.vbファイルを選択して追加するだけで可能でしょうか? | ||||||||||||||||
|
投稿日時: 2006-06-29 01:43
すいません、僕の方が話の流れから反れていました。m(__)m クラスライブラリの作成の容易さなら単一アセンブリの方が容易ですね。 確かに参照エラーで悩むぐらいなら、単一アセンブラにした方が早いかもしれませんね。 | ||||||||||||||||
|
投稿日時: 2006-06-29 08:11
namespaceの名前からみてユーザコントロールとかそういった系のクラスだと予想。
クラスライブラリプロジェクトって確かデフォだとSystem.Windows.Formsって参照設定されてないですよね? だから参照設定が足りてないような気がします。 「"〜のメンバではありません"、"〜は定義されてません"」の〜の部分はご自分で作られたクラスですか? こっそりとSystem.Windows.Forms.Buttonとかそういったのが入ってません? [ メッセージ編集済み 編集者: Kazuki 編集日時 2006-06-29 08:12 ] | ||||||||||||||||
|
投稿日時: 2006-06-29 10:09
それならば 1 つのファイルという言い方をします。 アセンブリの単位とはプロジェクトの単位です。 ビルドした時にできる DLL がアセンブリになります。
重複しそうですが、アセンブリ間の依存関係はファイルではなく、プロジェクト関連の問題です。 今、単一のプロジェクトでやっていれば単一のアセンブリ (1 つの DLL) ができあがりますよね。
すみません、深山さんのレスを私が勘違いしていたのかもしれません。 最後の 1 文は、私の発言を引用しての発言でしたので、 私に対して発言してなさっているように見えたのですが、そうではなさそうですね。(;^-^) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |