2016-06-03 5 views
-2

Ich habe einen Windows-Dienst mit einem Installer erstellt (mit InstallShield), aber jetzt möchte ich einige Änderungen vornehmen. Die Änderungen in der Hauptklasse des Projekts gelten nicht, wenn ich den Dienst kompiliere und ausführe, aber die Änderungen in anderen Klassen funktionieren gut.C# Windows-Dienst keine Codeänderungen anwenden

Antwort

0

Normalerweise sollte es nicht passieren, auch nicht versuchen, irgendeine Geschäftslogik in der Hauptklasse des Windows-Dienstes zu schreiben. Fügen Sie die OnStart() -Methode immer hinzu und rufen Sie dieselbe in der Hauptmethode des Service auf. Außerdem können Sie beim Live-Debugging einen Code zum Erstellen von Protokollen in den Service einfügen, der Sie darüber informiert, wo der Code nach der Installation nach dem Erstellen von Setup von InstallShield fehlgeschlagen ist.

+0

vor, ich in der Lage war, wurden den Code zu ändern und die Änderungen übernommen hatte ich ein Timer und jetzt habe ich einen zweiten Timer hinzugefügt. Ich benutze NLog, eine Zeichenfolge in eine Protokollnachricht, wenn der Dienst startet, und jetzt ändere ich diese Nachricht, aber die Nachricht wird nicht in der Protokolldatei aktualisiert. –

+0

Sind Sie sicher, dass Ihr Dienst nach der Installation gestartet wird..Wenn ja, müssen Sie die Protokolle der Main-Methode sonst bekommen, es beginnt nicht .. – Lara

+0

Weitere Informationen: Ich habe ein Setup InstallShield, aber ich habe den Service installiert in meinem Computer mit installUtil. –

0

Sie sollten den Dienst zuerst vom Dienstfenster aus anhalten. Ändern Sie dann die DLL-Datei wie gewünscht. Dann starte nochmal.

lebensrettend auf diese Dieser Link wird sein, weil ich die gleiche Sache einige Jahre zuvor erlebt wurde:

Eine Woche
https://msdn.microsoft.com/en-us/library/zt39148a(v=vs.110).aspx 
+0

Ich stoppe den Dienst, bevor ich meine Änderungen kompiliere und neu starte. –