- PR -

[C#]VBのモジュールと同じ事をC#で行うには?

投稿者投稿内容
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-06-09 15:03
引用:

Salaさんの書き込み (2006-06-09 11:59) より:
早速調べてみましたが、きっちりと把握するには
関連記事などをじっくり調べて理解したいと思いました。


そんなに難しいものじゃないですよ。
VB6でいうグループ化に近いと思います。
まずは、新しいプロジェクトによく使うクラスをライブラリとして登録して使ってみるのがお勧めです。
Sala
会議室デビュー日: 2006/06/08
投稿数: 14
投稿日時: 2006-06-09 19:52
ありがとうございます。

早速試してみているのですが、疑問点がたくさん出てきてしまいました。
恥ずかしながら、「ソリューション」と「プロジェクト」の概念も今ひとつ
つかめていないものでして…

過去ログ等を参照して、多分プロジェクト参照は出来た…と思うのですが、

----SLIB
|---売上入力1----uri1.sln
| |___uri1.csproj
| |___uriForm1.cs
|
|___共通__________Com.sln
|___Com.cspoj
|___Com.cs(共通クラス)

Windows上ではこの様な階層でフォルダ分けをしています。
基本は「1プログラム(画面)1ソリューション1プロジェクト」
という作りをしています。

この「uriForm1.cs」と「Com.cs」を一人で同時に開発したい。
「Com.cs」は他の売上入力の画面でも使いたい。
というのが目的です。

メインとなるのは売上入力ですので、「uri1.sln」を開いて
「リンク」と「プロジェクト参照」を両方試している所です。
(実際には二人で同じ様な環境を作って、それぞれ別ファイルで
 実験しています)

ここで疑問なのが、「リンク」でCom.csを引っ張り、uri1.slnの中で
編集(開発)を行う場合は、「uri1.sln」に付いていて、「Com.sln」
にはつけていない参照設定も使えるのですが、「プロジェクト参照」
で同じくuri(2).slnの中でCom2.csを編集すると、Com.slnにつけていない
参照設定は使えない様です。
(例えばSystem.Windouw.Forms はuri1(2).slnにしかつけていませんが、
 リンクではCom1.csでメッセージボックスが使えますが、参照設定では
 使えないです)

どうもリンクとプロジェクト参照の違いや利点、などが分からなくて
混乱してきてしまいました。。。

根本的な使い方や意味が分からないので、一からちゃんと勉強したいと思う
のですが、VS2005のヘルプを見ても今ひとつです。。。

詳しく解説してある本等を探して、基礎から理解したい、と思います。
(今までは、サンプルを見ながらひたすら焼き直し作業に追われて
 あまり深く考えて使ってなかったものでして)

もしよろしければ、「この本が分かりやすい」とかおすすめの書籍があれば
お教え頂けないでしょうか?すみませんが、どうぞよろしくお願い致します。 
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-06-09 21:15
このあたりは、本を読むより体で覚えた方が早いですね。

まず、リンク ファイルという考えは切り離して、「プロジェクト参照」 に専念しましょう。
状況が私には見えていないので、1 からの説明になるのですが...

1 つの業務単位を、プロジェクトにしているかと思います。
このプロジェクトは、既に何らかのソリューションに含まれているハズです。

このソリューションに、既存プロジェクトの追加で、Common を含めます。
(ここで、新規に追加するとコピーが作成されてしまうので注意)

これだけです。(依存関係ができます)
これだけで、作業者が同じ Common というアセンブリを扱うことができます。

最も強力なのは、VSS と組み合わせる方法です。
共通クラス ライブラリ (Common) は、誰でも編集できますが、
チェックアウトしておくことで予期せぬ編集を防ぐことができます。
また、チェックインした後、"各作業者が任意のタイミング" で、最新版を落とすことができます。
また、まずい場合は "任意のタイミングで" 復元することもできます。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Sala
会議室デビュー日: 2006/06/08
投稿数: 14
投稿日時: 2006-06-09 21:45
度々すみません。ご解説ありがとうございます。

まずは教えて頂いた手順で「プロジェクト参照」で作ってみたいと思います。
確かに、売上入力のソリューションの中にComのプロジェクトも含まれました。
(ファイルとしてはコピーはされないんですね。)
<売上入力 ソリューションの下に売上入力プロジェクトとComプロジェクトが
 いる状態です>

各クラス(売上FormとComクラス)で使用したいDLL等の「参照設定」は
同じDLLでも「各プロジェクト毎」にひっつけておかないといけない、
という認識で宜しいのでしょうか?

まだ全く作りかけで、ビルド出来ない状態なのですが…
この状態で「ソリューションのビルド」を行うと、Comクラスも含んだexeが
出来上がるのでしょうか? それとも売上FormのexeとComクラスのDLLが
出来上がるのでしょうか?

初歩的な事ばかりで申し訳ありません。

この辺から分かっていないもので、何か基礎から解説してある本でも
探した方が良いな…と思った次第です(苦笑)

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-06-09 22:41
引用:

Salaさんの書き込み (2006-06-09 21:45) より:

各クラス(売上FormとComクラス)で使用したいDLL等の「参照設定」は
同じDLLでも「各プロジェクト毎」にひっつけておかないといけない、という認識で宜しいのでしょうか?


プロジェクト毎ではなく、ソリューション毎ですよね。

# 関係ないですが、「各」 と 「毎」 は、同時に使っちゃいけません。

引用:

まだ全く作りかけで、ビルド出来ない状態なのですが…


作りかけ == ビルドができない、ではないですよね。
作りかけでも、他の作業をある程度進めやすくするための、プロジェクト参照です。

これは何度も話しているように "任意のタイミングで更新する" にあります。
これは、作りかけから完成に向けての、"一定のタイミング" だと仮定してみてください。

引用:

この状態で「ソリューションのビルド」を行うと、Comクラスも含んだexeが
出来上がるのでしょうか?それとも売上FormのexeとComクラスのDLLが出来上がるのでしょうか?


実際、ビルドを通してみればわかりますが、
あくまで 「プロジェクト」 の単位で、アセンブリが生成されます。

つまり、exe 側だけでなく、Com プロジェクトのアセンブリも単独で DLL として生成されます。
これは、exe を実行するのに Com プロジェクトの DLL が絶対に必要だからです。
「依存関係」 にあるとはそういうことを表します。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-06-10 09:15
引用:

Salaさんの書き込み (2006-06-09 21:45) より:

各クラス(売上FormとComクラス)で使用したいDLL等の「参照設定」は
同じDLLでも「各プロジェクト毎」にひっつけておかないといけない、
という認識で宜しいのでしょうか?



例えば、

コード:
今作っているプロジェクトたちをまとめたソリューション
 |
  ・−−−よく使いそうなクラス達をまとめたプロジェクト
 |
 ・−−−今回作っているソフトウェアのプロジェクト


となっている場合、「次回作る予定のソフトウェアのプロジェクト」で「よく使いそうなクラスたちをまとめたプロジェクト」を含める場合、「次回作る予定のソフトウェアのプロジェクト」にもプロジェクト参照させてやる必要がありますね。

引用:

Salaさんの書き込み (2006-06-09 21:45) より:

まだ全く作りかけで、ビルド出来ない状態なのですが…



各プロジェクトは、ひとつずつビルドされ、また自分で任意のプロジェクトをビルドすることも可能です。プロジェクト名の上で右クリックでビルドすれば良いのですから。

引用:

Salaさんの書き込み (2006-06-09 21:45) より:

この状態で「ソリューションのビルド」を行うと、Comクラスも含んだexeが
出来上がるのでしょうか? それとも売上FormのexeとComクラスのDLLが
出来上がるのでしょうか?


プロジェクトごとに、そのタイプによって、DLL や EXE ができます。これがじゃんぬねっとさんの言う「アセンブリ単位」ということですね。
僕の例で行くと、「よく使いそうなクラス達をまとめたプロジェクト.DLL」と「今回作っているソフトウェアのプロジェクト.EXE」が出来上がりますw

ビルドされた結果のフォルダを覗いてみるとわかると思いますよ。

引用:

Salaさんの書き込み (2006-06-09 21:45) より:

この辺から分かっていないもので、何か基礎から解説してある本でも
探した方が良いな…と思った次第です(苦笑)



については、

引用:

R・田中一郎さんの書き込み (2006-06-09 15:03) より:
そんなに難しいものじゃないですよ。
VB6でいうグループ化に近いと思います。
まずは、新しいプロジェクトによく使うクラスをライブラリとして登録して使ってみるのがお勧めです。



引用:

じゃんぬねっとさんの書き込み (2006-06-09 21:15) より:
このあたりは、本を読むより体で覚えた方が早いですね。



と意見が一致しているところで、本を読んで勉強することに拘らなくても良いと思いますw
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-06-10 09:26
引用:

R・田中一郎さんの書き込み (2006-06-10 09:15) より:

各プロジェクトは、ひとつずつビルドされ、また自分で任意のプロジェクトをビルドすることも可能です。プロジェクト名の上で右クリックでビルドすれば良いのですから。


いいえ、「依存関係」 にありますから、ビルドは通りません。
依存関係にあるアセンブリは、必ずビルドされます。

そうでなくとも、結局 「実行」 はできませんので、あまり意味はありません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-06-10 09:42
引用:

じゃんぬねっとさんの書き込み (2006-06-10 09:26) より:

引用:

R・田中一郎さんの書き込み (2006-06-10 09:15) より:

各プロジェクトは、ひとつずつビルドされ、また自分で任意のプロジェクトをビルドすることも可能です。プロジェクト名の上で右クリックでビルドすれば良いのですから。


いいえ、「依存関係」 にありますから、ビルドは通りません。
依存関係にあるアセンブリは、必ずビルドされます。

そうでなくとも、結局 「実行」 はできませんので、あまり意味はありません。


言葉不足でした(__;)

確かに、依存関係にあるプロジェクトのビルドが通らないと駄目ですね。
僕は「よく使いそうなクラス達をまとめたプロジェクト」を編集した後は、直後に単体でビルドさせて正常終了するまでデバッグさせるので、そのつもりで書いてしまいました。

スキルアップ/キャリアアップ(JOB@IT)