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?
Antworten
Zu viele Anzeigen?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()
verwendenServiceBase.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
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
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.
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.
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 ;)