Как развернуть проекты службы Windows с помощью Team Build 2010 - PullRequest
8 голосов
/ 26 апреля 2011

У меня есть решение VS2010, которое включает несколько проектов Windows Service. Мне нужно развернуть эти службы как часть сборки в Team Build 2010, а службы Windows необходимо развернуть на нескольких компьютерах с Windows Server.

Как я могу это сделать?

1 Ответ

9 голосов
/ 26 апреля 2011

Вы можете условно вызвать команду SC.exe из файла проекта службы Windows (* .csproj) для установки службы Windows на удаленном компьютере.

Вот пример:

<PropertyGroup>
  <DeployWinService>false</DeployWinService>
  <WinServiceName>MyService</WinServiceName>
  <TargetWinServiceHost Condition="'$(TargetWinServiceHost)' == ''">localhost</TargetWinServiceHost>
</PropertyGroup>

<Target Name="AfterCompile">
  <CallTarget Targets="PublishWinService" />
</Target>

<Target Name="PublishWinService"
        Condition="'$(DeployWinService)' == 'true'">
  <Exec Command="sc stop $(WinServiceName)" ContinueOnError="true" />
  <Exec Command="sc \\$(TargetWinServiceHost) create $(WinServiceName) binpath= '$(OutDir)\$(AssemblyName).exe' start= auto" />
</Target>

Здесь мы определяем пользовательские свойства MSBuild DeployWinService и TargetWinServiceHost, которые используются для управления тем, будут ли выходные данные проекта службы Windows установлены после компиляции, и на которыемашина.Свойство WinServiceName просто указывает имя, которое служба Windows будет иметь на целевом компьютере.

В вашем определении сборки вам придется явно установить DeployWinService и TargetWinServiceHost свойства в Аргументы MSBuild поля Advanced :

/p:DeployWinService=true;TargetWinServiceHost=MACHINENAME

Связанные ресурсы:

...