У меня есть приложение для анализа XML файла для интеграции данных в базу данных mssql. Я использую Visual С# express. Есть способ сделать сервис с экспресс-выпуском или мне нужно заставить Visual Studio сделать это?
Как я могу создавать сервисные приложения с Visual С# Express?
Ответ 1
Абсолютно можно. Вы даже можете сделать это с помощью csc
. Единственное в VS - это шаблон. Но вы можете напрямую ссылаться на System.ServiceProcess.dll.
Ключевые моменты:
- напишите класс, наследующий от
ServiceBase
- в
Main()
, используйтеServiceBase.Run(yourService)
- в переопределении
ServiceBase.OnStart
, создайте любой новый поток и т.д., вам нужно выполнить работу (Main()
должен немедленно выйти или считать неудачным запуском)
Пример кода
Очень простой код шаблона:
Program.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);
}
}
И приложение-приложение .NET не установлено так же, как и обычное сервисное приложение (т.е. вы не можете использовать cron.exe /install
или какой-либо другой аргумент командной строки. Вместо этого вы должны использовать .NET SDK InstallUtil
:
InstallUtil /LogToConsole=true cron.exe
Ресурсы
Ответ 2
Вы можете попробовать Visual Web Developer Express вместе с библиотекой набора разработчика coding4fun для веб-сервисов (через управляемые обертки кода): -
http://www.microsoft.com/express/samples/c4fdevkit/default.aspx
Ответ 3
Express Edition может писать и компилировать проекты Windows Service, но он не может их создать нормально. Единственный простой способ - создать новый проект службы в Visual Studio, а затем скопировать файлы проекта на машину с помощью Express Edition. После этого вам больше не нужна Visual Studio.
Есть три способа сделать это:
- Перейдите на машину с Visual Studio и создайте проект
- Google онлайн-учебник по созданию сервисов и загрузке исходного кода проекта
- Загрузите и установите 90-дневную пробную версию Visual Studio для создания проекта
Однако вы все равно столкнетесь с некоторыми трудностями, например, если хотите переименовать свой проект или не должны повторять это для каждой новой службы. Лучшее долгосрочное решение - заставить босса окончательно заплатить за копию Standard или Professional edition.
Ответ 4
Согласно this В статье MSDN у вас нет шаблона проекта для службы. Но я уверен, что если вы знаете, что делает шаблон для вас, вы можете создать и скомпилировать службу.