В Visual Studio отсутствует ссылка «Добавить установщик» в сервисном проекте - PullRequest
5 голосов
/ 02 января 2009

Я создаю службу Windows и следую этой статье MSDN , но я застрял на шаге 3 в разделе «Создание установщика». Я не могу найти ссылку "Добавить установщик", на которую она ссылается. Я нажимал везде, в том числе точно следуя инструкциям, которые он дает, но не могу найти его. У некоторых людей в Google возникла та же проблема, но они так и не нашли решения (кроме добавления объекта ServiceInstaller и его настройки вручную).

Кто-нибудь еще имел эту проблему и нашел причину? Я использую VS2008 и нацеливаюсь на .Net 2.0, если это имеет значение.

Ответы [ 3 ]

6 голосов
/ 02 января 2009

«Серая область», о которой они говорят, - это панель «Команды» на панели «Свойства» (не опечатка). Это не очень полезно, так что вы, вероятно, отключили его, я сделал.

Вы можете либо повторно включить его, щелкнув правой кнопкой мыши панель «Свойства» и выбрав «Команды», либо добавить проект установщика напрямую, щелкнув правой кнопкой мыши представление «Дизайн службы» (большое загарное окно с «Чтобы добавить компоненты в ваш класс»). ... ") и выберите" Добавить установщик ".

3 голосов
/ 23 сентября 2013

Для Visual Studio 2012 щелкните правой кнопкой мыши «Services1.cs» и выберите «View Designer» (или нажмите Shift-F7). Затем щелкните правой кнопкой мыши на сером фоне дизайнера.

Тогда и только тогда вы увидите пасхальное яйцо, которое Microsoft все время скрывала от вас: неуловимая ссылка Add Installer.

enter link description here

2 голосов
/ 03 ноября 2016

Чтобы ознакомиться с новой версией Visual Studio Express (2015):

Кажется, у нас не может быть этого "Добавить установщик" из экспресс-издания. Но это действительно очень просто. Вам просто нужно создать класс и добавить приведенный ниже код.

Также необходимо добавить ссылку System.Configuration.Install.dll.

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


namespace SAS
{
    [RunInstaller(true)]
    public class MyProjectInstaller : Installer
    {
        private ServiceInstaller serviceInstaller1;
        private ServiceProcessInstaller processInstaller;

        public MyProjectInstaller()
        {
            // Instantiate installer for process and service.
            processInstaller = new ServiceProcessInstaller();
            serviceInstaller1 = new ServiceInstaller();

            // The service runs under the system account.
            processInstaller.Account = ServiceAccount.LocalSystem;

            // The service is started manually.
            serviceInstaller1.StartType = ServiceStartMode.Manual;

            // ServiceName must equal those on ServiceBase derived classes.
            serviceInstaller1.ServiceName = "SAS Service";

            // Add installer to collection. Order is not important if more than one service.
            Installers.Add(serviceInstaller1);
            Installers.Add(processInstaller);
        }
    }
}
...