- - PR -
VB.NETアプリをWindowsサービスに
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-08-05 19:52
VB.NETでWindowsアプリケーションプロジェクトとして作成した常駐プログラムを
Windowsサービスにしたいのですが、Windowsサービスプロジェクトとして再作成 するしかないのでしょうか。 その場合、プロジェクトの内容を簡単に移行できる方法はないでしょうか。 よいお知恵がありましたらご教授ください。 | ||||||||
|
投稿日時: 2003-08-06 08:16
こんにちは。
“完全”に作り直すしかないと思うのですが・・・? というのは、Windows Serviceは、誰もログオンしていなくても起動します。ところが、WindowsアプリのGUI部分は、ログオンしていないと表示されません(だったと思う)。??以前にも同じような質問があったような??動くことは動くと思うのですが、GUIによって何らかのユーザアクションが必要ならば、動かせる保証がありません。 | ||||||||
|
投稿日時: 2003-08-06 11:01
Jittaさん、ありがとうございます。
GUI部分はデバック情報を表示していただけなので、サービスにする際には削除しようと思っています。 完全につくりなおす、というのはWindowsサービスプロジェクトを作成してコードをもう一度書き直す、ということですよね。 Windowsアプリケーションプロジェクトのコードを新しいプロジェクトに簡単に移行する方法はないもんでしょうか。。。 コピーペーストし続ければよいのでしょうか。。。 | ||||||||
|
投稿日時: 2003-08-06 11:25
GUI部とロジックが完全に分離されていれば、ファイルだけコピーすればOKです。そうでない場合は、コピー&ペーストと修正作業で何とかなるかもしれません。 ここで「完全に分離」とは、 ・ロジック部からGUI部を呼び出していないこと ・ロジック部とGUI部のファイルが別個であること をいいます。 これを意識しておけば、WindowsアプリをWebアプリに置き換えたりするときにも応用できます。 #MVCモデル(だっけ?)とか、ドキュメントビューアーキテクチャーとか | ||||||||
|
投稿日時: 2003-08-06 12:07
他のアプリケーションでも使うのなら、 コピー&ペーストせずにライブラリ化(DLL)すると思います。 どうしても作り直せない理由があるのでしたら、コマンドラインから、 >vbc /r:xxx.exe yyy.vb みたいにxxx.exeを参照すれば、yyy.vbの中からxxx.exe内のクラスが使えます。 ただし、この方法はVisualStudio上からは出来ないので、 開発はコマンドラインで行うことになります。 しかし、私としてはJittaさんと同意見で、作り直すことをお勧めします。 | ||||||||
|
投稿日時: 2003-08-06 16:57
「参照の追加」で、exeファイルへの参照を追加するという方法があるのでは?マネージドアセンブリならば、DLLでもEXEでも参照できたと思いますが。 ただ、これもクラスの作り方次第でFormが生成されますから、お勧めはできません。 >おひろさん 読んでいて思ったのですが、「DLLにしたとして、そこで検知した変更をデバッグ用の画面に表示するにはどうするの!?」と思われるかもしれませんね。そういうときはイベントを宣言します。 serviceではデバッグ用の値表示が大変なので、ロジック部を完全に分割し、DLL化します。そして、1つのソリューションにデバッグ用のwindowsアプリ、ロジックを実装するDLLプロジェクト、serviceとして実行するためのserviceプロジェクト、serviceのインストーラプロジェクトの4つを作ります。この次からはこうやって作ると、手間が省けますよ。←経験則...トホホ | ||||||||
|
投稿日時: 2003-08-06 17:48
「拡張子がDLLのアセンブリ、または、COMコンポーネントのみ参照できます。」ってエラーメッセージ出ません? やり方が拙いのかしら・・・ | ||||||||
|
投稿日時: 2003-08-07 08:21
あ〜!選択できるのに!!選択できるので、てっきり追加できるモノと思っていました。 #これって、選択できることがバグでは?? |