Как развернуть проекты служб Windows с помощью Team Build 2010

#.net #deployment #msbuild #windows-services #tfsbuild

#.net #развертывание #msbuild #windows-службы #tfsbuild

Вопрос:

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

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

Ответ №1:

Вы могли бы условно вызвать 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 в разделе Дополнительно:

 /p:DeployWinService=true;TargetWinServiceHost=MACHINENAME
  

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