#.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
Связанные ресурсы: