Ich habe ein Projekt, das als Windows-Dienst für die Produktion bereitgestellt wird. Für lokale Entwicklungszwecke wäre es jedoch nützlich, es als Konsolenanwendung auszuführen. Im Moment habe ich eine Klasse namens ReportingHost
, die meine Kernfunktionalität bietet, und eine Klasse namens ReportingServiceHost, die von ServiceBase
erbt und ermöglicht es mir, die Anwendung als Dienst auszuführen. Es gibt auch eine Programmklasse mit einer Hauptmethode, die auf meinem ReportingServiceHost ServiceBase.Run
aufruft.Was ist das akzeptierte Muster für eine Anwendung, die als Dienst oder als Konsolenanwendung ausgeführt werden kann
Ich denke, ich muss eine ReportingConsoleHost
Klasse schreiben, die es mir ermöglicht, die Funktionalität in einer Konsole auszuführen. Dann muss ich meine Main
ändern, um auf einen Befehlszeilenschalter zu reagieren und das eine oder andere auszuwählen. Das sind die zwei Bits, mit denen ich Probleme habe.
Ich habe mir this angesehen und versucht, diesen Code zu verwenden, aber meine App wird sofort beendet, sie zeigt kein Konsolenfenster an und wartet nicht vor dem Schließen auf Enter.
Ein Teil des Problems ist, dass ich kein tiefes Verständnis davon habe, wie diese Dinge funktionieren. Ein definitives Muster zum Aufspalten meiner Funktionalität, meine zwei verschiedenen Möglichkeiten, diese Funktionalität auszuführen, und eine Hauptmethode, die eine dieser Möglichkeiten auf der Basis eines Befehlszeilenarguments auswählt, möchte ich erreichen.
Damit VS ein Konsolenfenster für Sie erzeugt, wenn Sie F5 mit dieser Lösung drücken, müssen Sie die Projekteigenschaften ändern, indem Sie auf der Registerkarte Anwendung die Option Ausgabe an Konsole festlegen. Soweit ich das beurteilen kann, wird es sich trotzdem als Service installieren lassen. –
@Carl ... ja, ich sagte "Konsole exe" in der Antwort ... –