- - PR -
別プロジェクトの呼び出しについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-01-19 17:18
Windowsアプリケーションで別プロジェクトの機能の呼び出しを実装したいと考えております。
・プロジェクト1 Form1 Form2 Form3 ・プロジェクト2 Form1 Form2 Form3 上記のような構成が有る場合に、プロジェクト1のForm3から、プロジェクト2のForm1(スタートアップフォーム)を呼び出したいのです。 ソリューションに上記の2つのプロジェクトを配置して、プロジェクト参照を行うことによって起動は可能ですが、今回はClickOnceを使用してそれぞれのプロジェクトを発行したいと思っております。 この場合、2つのプロジェクトはプログラムのメンテナンスタイミングも異なると思われるため、別々に発行したいのですが、そうした場合、ClickOnceでインストールされたプロジェクト1から、同様にインストールされたプロジェクト2を呼ぶということはできるのでしょうか? たとえば、下記のようなコードで別のプログラムの起動は可能なようです。 System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.StartInfo.FileName = "notepad.exe"; proc.Start(); これと同じようなイメージで呼び出し先のプログラムが、ClickOnceで配布されたアプリケーションの場合の方法が判りません。 何かご存知の方がいらっしゃいましたら、助言よろしくお願いします。 |
|
投稿日時: 2007-01-19 22:41
.NET の場合、DLL Hell を避けるため、ひとつのアプリケーションで使うアセンブリは、いったんコンパイルしてまとめて配置、、、です。
プロジェクト1,2と分けても、ソリューションがひとつなら、それぞれ別々に編集しながら、コンパイルは一回で出来ますよね? また、プロジェクト2の変更がプロジェクト1に影響しない(あるいはその逆)ことは、どうやって保証しますか? あと、厳密名つけてバージョン情報を指定して…なんて話が過去にも出ていますが、その辺は目を通されたでしょうか。 _________________ |
|
投稿日時: 2007-01-20 15:54
Jittaさん。助言ありがとうございます。
実は、実装したい要件はメニュー機能です。 たとえば ・ソリューション1 ___・メニュープロジェクト ___・得意先保守プロジェクト ___・商品保守プロジェクト ___・倉庫保守プロジェクト 上記のようなソリューション構成が有るとします。 要するに、メニュー以外のプロジェクトは今後増えていくという考えです。 メニューの要件として、ログインしたユーザーによって表示するメニュー項目 を限定したいというものがあります。 このため、表示可能なメニュー項目の情報を、データベースに保有し、メニュー 機能はこの情報を元に、表示するメニューを変更するというような方式を実装したいのです。 結果的に、変数の値として受け取ったプログラムファイル名のような物を 指定して別プロジェクトの機能が呼び出せればと考えました。 仮に、Windowsインストーラを使用してインストールすると実際にプロジェクト単位に exeファイルがPCにできるようですので、最初に書いた > System.Diagnostics.Process proc = new System.Diagnostics.Process(); > proc.StartInfo.FileName = "notepad.exe"; > proc.Start(); この様な感じで、"notepad.exe"の部分を変数にする事によって実装できると思います。 しかし、このようなことはそもそもClickOnceでは実現できないのでしょうか? 業務アプリケーション全体としては、相当の規模に成ると思われるため、 ClickOnceで更新する対象が毎回システム全体というのも大きすぎるように 考えましたし、このようなケースではメニュー機能が他の機能に影響を受ける 可能性は大変低いと思います。 よって、変更分だけを更新するイメージなのですがいかがでしょうか? もしかすると、私が実装したい要件は、ソリューションが異なるプロジェクトの 機能を呼び出して、かつ、ClickOnceで個別に更新する方法は無いかという 事かもしれません。 また、厳密名に関しては、まだはっきりと理解できていない状態ですので継続して 勉強してみます。 |
|
投稿日時: 2007-01-20 21:12
ClickOnce というのは、よくは調べていませんが、ノータッチデプロイメントの後継だと思います。後継だとすると、アプリケーションの更新は、サーバのみ行えばよいと思います。そこから、クライアントが勝手に持って行ってくれる、と。
であるなら、特定の DLL だけ更新したり、追加したりするのではなく、全部再配置してもよいのではないでしょうか。 また、権限によってメニューを見せる/見せないの制御をするのなら、その部分はコンパイルしてテストせねばならず、少なくとも、「メニュー」を出したつもりが「得意先保守」が起動した・・・なんてことがないように、テストは行わなければならないのではないでしょうか。 _________________ |
1