如何使用Team Build 2010部署Windows服务项目

Rot*_*te2 8 .net deployment msbuild windows-services team-build

我有一个VS2010解决方案,其中包括几个Windows服务项目.我需要将这些服务部署为Team Build 2010中的构建的一部分,并且必须在多台Windows Server计算机上部署Windows服务.

我怎样才能做到这一点?

Enr*_*lio 9

您可以有条件地从Windows服务项目文件(*.csproj)调用SC.exe命令,以在远程计算机上安装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>
Run Code Online (Sandbox Code Playgroud)

在这里,我们定义自定义的MSBuild特性DeployWinServiceTargetWinServiceHost被用来控制Windows服务项目的输出是否将被安装在编译后和哪台机器.该WinServiceName属性仅指定Windows服务在目标计算机上将具有的名称.

构建定义中,您必须在" 高级"部分的" MSBuild参数"字段中显式设置DeployWinServiceTargetWinServiceHost属性:

/p:DeployWinService=true;TargetWinServiceHost=MACHINENAME
Run Code Online (Sandbox Code Playgroud)

相关资源: