18 Stimmen

Wie kann ich mit Visual c# Express Dienstanwendungen erstellen?

Ich habe eine Anwendung zu parsen Xml-Datei für die Integration von Daten in mssql-Datenbank zu bauen. Ich bin mit Visual c# express. Gibt es einen Weg, um Dienst mit Express-Edition zu machen, oder ich ein haben, um Visual Studio, es zu tun bekommen?

0 Stimmen

In Windows bedeutet "Dienst" etwas ganz Bestimmtes. Meinen Sie wirklich einen Dienst wie die, die in "services.msc" angezeigt werden?

0 Stimmen

Véase http://www.developer.com/net/csharp/article.php/2173801 Vergessen Sie nicht die Klasse des Installateurs ;)

63voto

Marc Gravell Punkte 970173

Das können Sie auf jeden Fall. Sie können es sogar tun mit csc . Die einzige Sache in VS ist die Vorlage . Sie können jedoch selbst auf die System.ServiceProcess.dll verweisen.

Wichtige Punkte:

  • eine Klasse schreiben, die erbt von ServiceBase
  • in Ihrem Main() verwenden ServiceBase.Run(yourService)
  • im ServiceBase.OnStart überschreiben, einen neuen Thread erstellen usw., um die Arbeit zu erledigen ( Main() muss sofort beendet werden, sonst gilt es als Fehlstart)

Beispiel-Code

Ein sehr einfacher Vorlagencode wäre:

Programm.cs :

using System;
using System.ServiceProcess;

namespace Cron
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        static void Main()
        {
            System.ServiceProcess.ServiceBase.Run(new CronService());
        }
    }
}

CronService.cs :

using System;
using System.ServiceProcess;

namespace Cron
{
    public class CronService : ServiceBase
    {
        public CronService()
        {
            this.ServiceName = "Cron";
            this.CanStop = true;
            this.CanPauseAndContinue = false;
            this.AutoLog = true;
        }

        protected override void OnStart(string[] args)
        {
           // TODO: add startup stuff
        }

        protected override void OnStop()
        {
           // TODO: add shutdown stuff
        }
    }
}

CronInstaller.cs :

using System.ComponentModel;
using System.Configuration.Install;
using System.ServiceProcess;

[RunInstaller(true)]
public class CronInstaller : Installer
{
  private ServiceProcessInstaller processInstaller;
  private ServiceInstaller serviceInstaller;

  public CronInstaller()
  {
    processInstaller = new ServiceProcessInstaller();
    serviceInstaller = new ServiceInstaller();

    processInstaller.Account = ServiceAccount.LocalSystem;
    serviceInstaller.StartType = ServiceStartMode.Manual;
    serviceInstaller.ServiceName = "Cron"; //must match CronService.ServiceName

    Installers.Add(serviceInstaller);
    Installers.Add(processInstaller);
  } 
}  

Und eine .NET-Dienstanwendung wird nicht auf die gleiche Weise installiert wie eine normale Dienstanwendung (d.h. Sie können nicht mit cron.exe /install oder ein anderes Kommandozeilenargument. Stattdessen müssen Sie das .NET SDK's InstallUtil :

InstallUtil /LogToConsole=true cron.exe

Ressourcen

0voto

cyberbobcat Punkte 1159

Sie könnten Visual Web Developer Express zusammen mit der coding4fun developer kit Bibliothek für Webservices (über Managed Code Wrapper) ausprobieren:-

http://www.microsoft.com/express/samples/c4fdevkit/default.aspx

0voto

David Punkte 23860

Die Express Edition kann Windows Service-Projekte schreiben und kompilieren, aber sie kann sie nicht normal erstellen. Die einzige einfache Möglichkeit besteht darin, ein neues Dienstprojekt in Visual Studio zu erstellen und dann die Projektdateien auf den Rechner mit Express Edition zu kopieren. Danach brauchen Sie Visual Studio nicht mehr.

Es gibt 3 Möglichkeiten, dies zu erreichen:

  • Gehen Sie zu einem Rechner mit Visual Studio und erstellen Sie das Projekt
  • Googeln Sie eine Online-Anleitung zur Erstellung von Diensten und laden Sie den Quellcode des Projekts herunter
  • Laden Sie eine 90-Tage-Testversion von Visual Studio herunter und installieren Sie sie, um das Projekt zu erstellen.

Sie werden jedoch immer noch auf einige Schwierigkeiten stoßen, z. B. wenn Sie Ihr Projekt umbenennen wollen oder dies nicht für jeden neuen Dienst wiederholen müssen. Die beste langfristige Lösung ist, den Chef dazu zu bringen, endlich eine Kopie der Standard oder Professional Edition zu kaufen.

0voto

Alex Shnayder Punkte 1352

Selon こん MSDN-Artikel haben Sie keine Projektvorlage für einen Dienst. Aber ich bin mir ziemlich sicher, dass Sie einen Dienst erstellen und kompilieren können, wenn Sie wissen, was die Vorlage für Sie tut.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X