- PR -

VB.NETアプリをWindowsサービスに

投稿者投稿内容
おひろ
ベテラン
会議室デビュー日: 2003/07/23
投稿数: 63
投稿日時: 2003-08-05 19:52
VB.NETでWindowsアプリケーションプロジェクトとして作成した常駐プログラムを
Windowsサービスにしたいのですが、Windowsサービスプロジェクトとして再作成
するしかないのでしょうか。
その場合、プロジェクトの内容を簡単に移行できる方法はないでしょうか。
よいお知恵がありましたらご教授ください。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-08-06 08:16
こんにちは。
引用:

おひろさんの書き込み (2003-08-05 19:52) より:
VB.NETでWindowsアプリケーションプロジェクトとして作成した常駐プログラムを
Windowsサービスにしたいのですが、Windowsサービスプロジェクトとして再作成
するしかないのでしょうか。
その場合、プロジェクトの内容を簡単に移行できる方法はないでしょうか。
よいお知恵がありましたらご教授ください。


 “完全”に作り直すしかないと思うのですが・・・?

 というのは、Windows Serviceは、誰もログオンしていなくても起動します。ところが、WindowsアプリのGUI部分は、ログオンしていないと表示されません(だったと思う)。??以前にも同じような質問があったような??動くことは動くと思うのですが、GUIによって何らかのユーザアクションが必要ならば、動かせる保証がありません。
おひろ
ベテラン
会議室デビュー日: 2003/07/23
投稿数: 63
投稿日時: 2003-08-06 11:01
Jittaさん、ありがとうございます。
GUI部分はデバック情報を表示していただけなので、サービスにする際には削除しようと思っています。
完全につくりなおす、というのはWindowsサービスプロジェクトを作成してコードをもう一度書き直す、ということですよね。
Windowsアプリケーションプロジェクトのコードを新しいプロジェクトに簡単に移行する方法はないもんでしょうか。。。
コピーペーストし続ければよいのでしょうか。。。

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-08-06 11:25
引用:

おひろさんの書き込み (2003-08-06 11:01) より:

Windowsアプリケーションプロジェクトのコードを新しいプロジェクトに簡単に移行する方法はないもんでしょうか。。。
コピーペーストし続ければよいのでしょうか。。。


 GUI部とロジックが完全に分離されていれば、ファイルだけコピーすればOKです。そうでない場合は、コピー&ペーストと修正作業で何とかなるかもしれません。

ここで「完全に分離」とは、
・ロジック部からGUI部を呼び出していないこと
・ロジック部とGUI部のファイルが別個であること
をいいます。

 これを意識しておけば、WindowsアプリをWebアプリに置き換えたりするときにも応用できます。
#MVCモデル(だっけ?)とか、ドキュメントビューアーキテクチャーとか
mei
大ベテラン
会議室デビュー日: 2003/04/08
投稿数: 114
投稿日時: 2003-08-06 12:07
引用:

おひろさんの書き込み (2003-08-06 11:01) より:
コピーペーストし続ければよいのでしょうか。。。



他のアプリケーションでも使うのなら、
コピー&ペーストせずにライブラリ化(DLL)すると思います。

どうしても作り直せない理由があるのでしたら、コマンドラインから、
>vbc /r:xxx.exe yyy.vb
みたいにxxx.exeを参照すれば、yyy.vbの中からxxx.exe内のクラスが使えます。

ただし、この方法はVisualStudio上からは出来ないので、
開発はコマンドラインで行うことになります。

しかし、私としてはJittaさんと同意見で、作り直すことをお勧めします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-08-06 16:57
引用:

meiさんの書き込み (2003-08-06 12:07) より:
どうしても作り直せない理由があるのでしたら、コマンドラインから、
>vbc /r:xxx.exe yyy.vb
みたいにxxx.exeを参照すれば、yyy.vbの中からxxx.exe内のクラスが使えます。

ただし、この方法はVisualStudio上からは出来ないので、
開発はコマンドラインで行うことになります。


 「参照の追加」で、exeファイルへの参照を追加するという方法があるのでは?マネージドアセンブリならば、DLLでもEXEでも参照できたと思いますが。

 ただ、これもクラスの作り方次第でFormが生成されますから、お勧めはできません。


>おひろさん

 読んでいて思ったのですが、「DLLにしたとして、そこで検知した変更をデバッグ用の画面に表示するにはどうするの!?」と思われるかもしれませんね。そういうときはイベントを宣言します。
 serviceではデバッグ用の値表示が大変なので、ロジック部を完全に分割し、DLL化します。そして、1つのソリューションにデバッグ用のwindowsアプリ、ロジックを実装するDLLプロジェクト、serviceとして実行するためのserviceプロジェクト、serviceのインストーラプロジェクトの4つを作ります。この次からはこうやって作ると、手間が省けますよ。←経験則...トホホ
mei
大ベテラン
会議室デビュー日: 2003/04/08
投稿数: 114
投稿日時: 2003-08-06 17:48
引用:

 「参照の追加」で、exeファイルへの参照を追加するという方法があるのでは?マネージドアセンブリならば、DLLでもEXEでも参照できたと思いますが。



「拡張子がDLLのアセンブリ、または、COMコンポーネントのみ参照できます。」ってエラーメッセージ出ません?

やり方が拙いのかしら・・・
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-08-07 08:21
引用:

meiさんの書き込み (2003-08-06 17:48) より:
引用:

 「参照の追加」で、exeファイルへの参照を追加するという方法があるのでは?マネージドアセンブリならば、DLLでもEXEでも参照できたと思いますが。



「拡張子がDLLのアセンブリ、または、COMコンポーネントのみ参照できます。」ってエラーメッセージ出ません?


 あ〜!選択できるのに!!選択できるので、てっきり追加できるモノと思っていました。
#これって、選択できることがバグでは??

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