- PR -

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

投稿者投稿内容
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2006-06-12 12:44
引用:

Salaさんの書き込み (2006-06-09 19:52) より:
Windows上ではこの様な階層でフォルダ分けをしています。
基本は「1プログラム(画面)1ソリューション1プロジェクト」
という作りをしています。


フォルダ分けするのは構いませんが、
1画面1ソリューション1プロジェクトはやりすぎじゃないですか?
画面の数だけDLLができちゃいますよw

引用:

恥ずかしながら、「ソリューション」と「プロジェクト」の概念も今ひとつ
つかめていないものでして…


一般的な業務アプリに的を絞って思いっきり端折った説明をすると、
1つの実行ファイル(EXE)やクラスライブラリ(DLL)に対して
1つのプロジェクトが有り、
複数のプロジェクトをまとめた総体としての1つのアプリケーションに対して
1つのソリューションが有る、という考え方で良いと思います。

なので、基本的にslnファイルは全体で1つです。
それに複数のcsprojがぶら下がる。

あと、画面ごとに別EXEにすると画面ごとに別プロセスになってしまうので、
普通はソリューションの中でEXEのプロジェクトは1つにします。
これがいわゆるデバッグの開始点となるスタートアッププロジェクトで、
それが参照するクラスライブラリが周りにひっついていくイメージです。

そしてクラスライブラリをひっつける時にDLL参照せずにプロジェクト参照すると、
ソリューションエクスプローラにソースごと取り込めて、
クラスライブラリ内のソースにブレークポイントをはってステップ実行することが可能。

ただし、プロジェクト参照したクラスライブラリはビルドの対象になるので、
既に品質が安定してビルドやステップ実行の必要がなくなったクラスライブラリは、
途中でプロジェクト参照からDLL参照に切り替えるのも有りだと思います。


以下ちょっと脱線ですが…
引用:

じゃんぬねっとさんの書き込み (2006-06-09 22:41) より:
引用:

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

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


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

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


参照設定はプロジェクト毎であってると思いますけど?
あと「各」 と 「毎」 は、同時に使っちゃいけませんか?(^^;
「各プロジェクト毎」って表現は日本語としてありだと思うんですけども。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-06-12 14:36
引用:

ぼのぼのさんの書き込み (2006-06-12 12:44) より:

あと「各」 と 「毎」 は、同時に使っちゃいけませんか?(^^;
「各プロジェクト毎」って表現は日本語としてありだと思うんですけども。


脱線ネタにレスもアレですが・・・
僕も各○○毎という表現は避けるようにしています。
確か何かのソフトで文法チェックにひっかかりませんでしたっけ?
同様の理由で「一番ベストな方法」「最もベストな方法」も避けていますがw
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-06-12 16:33
引用:

ぼのぼのさんの書き込み (2006-06-12 12:44) より:

フォルダ分けするのは構いませんが、
1画面1ソリューション1プロジェクトはやりすぎじゃないですか?
(snip)
あと、画面ごとに別EXEにすると画面ごとに別プロセスになってしまうので、
普通はソリューションの中でEXEのプロジェクトは1つにします。


"画面" という表現について、いつも違和感を覚えるのですが、
人によっては 「アプリケーション単位」 を指す場合があります。
流石に 'そっち' の意味だと思っているのですが...

引用:

参照設定はプロジェクト毎であってると思いますけど?


読み違えていたみたいです。
「プロジェクト参照」 の話だったので、ソリューション内に参加させねばならない。
という意味で捉えて回答していました。

引用:

あと「各」 と 「毎」 は、同時に使っちゃいけませんか?(^^;
「各プロジェクト毎」って表現は日本語としてありだと思うんですけども。


あう... 関係ないところですが、重ね言葉にはならないんでしょうか。
法令でも、"各冊ごとの~" なんていう下りがあって、指摘されていますが。
(もし続くようなら PM か、別スレッドでやりましょう)


[ メッセージ編集済み 編集者: じゃんぬねっと 編集日時 2006-06-12 17:29 ]
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2006-06-12 18:08
引用:

"画面" という表現について、いつも違和感を覚えるのですが、
人によっては 「アプリケーション単位」 を指す場合があります。
流石に 'そっち' の意味だと思っているのですが...


うーん日本語は難しいですね(^^;
私は素直に言葉通りに捉えてしまいました。

引用:

あう... 関係ないところですが、重ね言葉にはならないんでしょうか。
法令でも、"各冊ごとの~" なんていう下りがあって、指摘されていますが。
(もし続くようなら PM か、別スレッドでやりましょう)


これに関しては、これで最後にしますので別スレにしません。
試しにWordの文章校正(デフォルトではOFFにしている)に聞いてみたら、ばっちり怒られましたw
個人的に違和感が無かったのでOKかと思ったら、重ね言葉みたいですね。
以後気をつけたいと思います。
Sala
会議室デビュー日: 2006/06/08
投稿数: 14
投稿日時: 2006-06-13 15:36
ご回答ありがとうございます。
質問しておきながら返答が遅くなり、申し訳ありませんでした。

みなさまのお話を順に読んで行くと…おかげ様で大分見えて来た気がします。

まだ実際に「ビルド」して結果を確認出来ていないのですが
(開発以外の事に追われていたものでして…)
解釈としてはこれで合ってますでしょうか?(自分でももちろん試します。。)

・結果としては「プロジェクト参照」しても「DLL参照」をしても同じ
・但し、前者の場合はデバック時にソースで追う事が出来る
 その代わり、参照しているプロジェクト(参照元?)をビルドする度に
 参照されているDLLも毎回リビルドされてしまう。

プロジェクト単位でEXEかDLLが出来る、というお話を読んで、やっと頭の中で
もやもやしていた部分がすっきりした気がします。
後は実際にビルドしてみて、結果を見てみたいと思います。

あんまり人に聞いてばっかりでもいけないな、と思い本で調べようと思って
いたのですが…皆様のおかげで大分理解出来ました。本当にありがとうございます。
(ちなみに本屋に行ってみたものの…あんまり納得させてくれる本には出合えません
 でした。。)

>「各〜毎」 ご指摘ありがとうございます。
 全く意識せずに使っておりました。これも重ね言葉になってしまうのですね。
 「何だか足りない気がしてしまう」という意識で使ってしまってましたが…
 ちゃんと言葉の意味を勉強しないと駄目ですね。以後気を付けます!
>「画面」 ですが…
 これは「一業務アプリ」の意味で書いてました。
 例えば「売上入力」でその中で「画面1・2・3」と切り替わったり、別ウィンドウ
 が開いても「一画面(一画面モジュール?)」という認識です。
 同じ売上入力の画面プログラムでも、「売上1」「売上2」「売上3」・・・と
 いう様に、色んなバリエーションがあり、導入するお客さんによってどのパターン
 を使うかを選択してもらう。 パズルの様に、顧客によって使う組み合わせが変わる
 為に「一画面(業務モジュール)」で一EXEという形なのです。
 (セミオーダーに近い業務パッケージシステムなもので…)
 最終形が「一つのEXEと付随するDLL」という形になるのであれば、ソリューションは
 一つにしておいた方が良い、という事でよろしいのでしょうか。。
 
また実際に経験(確認)してみてご報告させて頂きます。

色々お世話になりました。ありがとうございます。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-06-13 16:58
引用:

Salaさんの書き込み (2006-06-13 15:36) より:

解釈としてはこれで合ってますでしょうか?

・結果としては「プロジェクト参照」しても「DLL参照」をしても同じ
・但し、前者の場合はデバック時にソースで追う事が出来る
 その代わり、参照しているプロジェクト(参照元?)をビルドする度に
 参照されているDLLも毎回リビルドされてしまう


こう書いてしまいますと、「プロジェクト参照」 が見劣りしてしまうように感じるのですが、
修正が容易、他の作業者へのライブラリの更新・ロールバックともに容易、
つまり、「平行開発」 に向いているという利点があります。
これが、2 番目に美味しいところなのです。

引用:

最終形が「一つのEXEと付随するDLL」という形になるのであれば、ソリューションは
一つにしておいた方が良い、という事でよろしいのでしょうか。。


業務アプリケーションは EXE が単体とも限りませんが、小規模であればそれで良いのでしょう。

ソリューション自体は、もっと自由度が高いです。
セットアップ用のソリューション、各作業者用のソリューションなどと分けることもできます。
大規模開発の場合は、「分散ソリューション」 なんて手段もあります。

1 つのプロジェクトは、決まりきった 1 つのソリューションに存在しなければならないわけではありません。
複数ある別々のソリューションに、同じプロジェクトが参加していても、問題ありません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Sala
会議室デビュー日: 2006/06/08
投稿数: 14
投稿日時: 2006-06-13 18:04
なるほど、必ず一つのソリューションという訳では無いのですね。
VBのプロジェクトのもっと大きなくくりみたいなものかと思っていました。

自分の目的や用途に合わせてソリューションは活用出来そうですね。
作業をする時の単位というか、くくり…みたいな感覚でしょうか。。

勉強になりました。ありがとうございます!

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