DOBON.NET DOBON.NETプログラミング掲示板過去ログ

他のプロジェクトのクラスを参照するには

環境/言語:[XP VB.NET Framewor1.1]
分類:[.NET]

fn32です。こんばんは。
初めて投稿します。よろしくお願いします。

添付のURLの図のように、
プロジェクト名:AAA(ウィンドウアプリケーション)にForm1,Class1、
プロジェクト名:BBB(コンソールアプリケーション)にModule1 があるのですが、
BBBのModule1から、AAAのClass1を参照したいのですが、設定が分かりません。
BBBのプロジェクトに,Class1を追加しても、AAAのClass1を変更しても、
BBBのプロジェクトのClass1は変更されないので、困っています。
AAA,BBBともに同じクラスファイルを使用する事はできないのでしょうか?
こんにちは、じゃんぬ です。

■No11374に返信(fn32さんの記事)
> 添付のURLの図のように、
> プロジェクト名:AAA(ウィンドウアプリケーション)にForm1,Class1、
> プロジェクト名:BBB(コンソールアプリケーション)にModule1 があるのですが、
> BBBのModule1から、AAAのClass1を参照したいのですが、設定が分かりません。
> BBBのプロジェクトに,Class1を追加しても、AAAのClass1を変更しても、
> BBBのプロジェクトのClass1は変更されないので、困っています。
> AAA,BBBともに同じクラスファイルを使用する事はできないのでしょうか?

 方法 1. リンク ファイルとしてクラスを追加する
 方法 2. クラス ライブラリ化し、プロジェクト参照を使用する

前者のメリットは、現状のまま利用できること、
デメリットは、クラスに変更がある度にすべてのプロジェクトをビルドしなくてはならないこと。
後者のメリットは、クラスに変更が生じてもその DLL だけをビルドすれば良いこと。
デメリットは、現在の構造を少しばかり変えなければいけない。
fn32です。ご回答ありがとうございます。

■No11376に返信(じゃんぬねっとさんの記事)
> 
>  方法 1. リンク ファイルとしてクラスを追加する
>  方法 2. クラス ライブラリ化し、プロジェクト参照を使用する
> 
方法1の追加の方法が分かりませんので、
具体的に操作を教えていただけないでしょうか?
BBBのプロジェクトを右クリックしてもリンクとしてクラスを追加する
ようなメニューが出ないので、どうすればよいか分かりません。

よろしくお願いします。
こんにちは、じゃんぬ です。

■No11379に返信(fn32さんの記事)
> 方法1の追加の方法が分かりませんので、
> 具体的に操作を教えていただけないでしょうか?
> BBBのプロジェクトを右クリックしてもリンクとしてクラスを追加する
> ようなメニューが出ないので、どうすればよいか分かりません。

追加 --> 既存項目の追加 --> 開くの右にある▼ボタンを選択 --> リンク ファイル

# しかしながら、あたしは後者の方法をお勧めします。
fn32です。ご回答ありがとうございます。
自分の思っていたとおりのことができました。

■No11380に返信(じゃんぬねっとさんの記事)
> 
> # しかしながら、あたしは後者の方法をお勧めします。

残念ながら、VBがスタンダードエディションのためにDLLが、
作成できないんです、、プロフェッショナルエディションなら可能なのですが。
この事を解決するために、真っ先にDLLが浮かんだんですが、、
VBを購入する際、全然知識が無くて安いほうをつい買っちゃいました。
(あの時、お金をケチらなければ、、、)

本当にありがとうございました。
解決済み!
こんにちは、じゃんぬ です。

■No11382に返信(fn32さんの記事)
> 残念ながら、VBがスタンダードエディションのためにDLLが、
> 作成できないんです、、プロフェッショナルエディションなら可能なのですが。
> この事を解決するために、真っ先にDLLが浮かんだんですが、、
> VBを購入する際、全然知識が無くて安いほうをつい買っちゃいました。
> (あの時、お金をケチらなければ、、、)

責任は持てませんが、こういうことが可能です。
http://dobon.net/vb/dotnet/vs/stdmakeclasslibrary.html
解決済み!
fn32です。たびたびありがとうございます。
先ほど、リンクする方法で解決づみとしたのですが、
リンクしても、
1)各クラスが依存しまくっていること
2)Namespace が解決できない(Imports がAAAのモジュールから参照できない)
ため、だめでした。

■No11383に返信(じゃんぬねっとさんの記事)
> 
> 責任は持てませんが、こういうことが可能です。
> http://dobon.net/vb/dotnet/vs/stdmakeclasslibrary.html

いまから、DLLの作成に挑戦したいと思います。
こんにちは、じゃんぬ です。

■No11384に返信(fn32さんの記事)
> 1)各クラスが依存しまくっていること

「オブジェクト指向言語」以前に「構造化言語」として成り立っていません。
共通化するのであれば、そのモジュール (部品) は「独立」していなければなりません。
これは、モジュールの最低限の概念です。

> いまから、DLLの作成に挑戦したいと思います。

ですので、DLL にしても根本的な解決にはならないと思います。
デリゲードなんかを多用すれば解決はできますが、可読性を損なうのでお勧めできません。
お節介ながら、設計を見直した方がよろしいかと思います。
fn32です。

> お節介ながら、設計を見直した方がよろしいかと思います。
耳の痛いお話ですが、おっしゃるとおり設計を見直してみます。

また、DLLの勉強を始めましたので、
このスレッドは、解決済みとさせていただきます。

ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板