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

8

我有一个VS2010解决方案,其中包括几个Windows服务项目。 我需要在Team Build 2010中部署这些服务并将Windows服务部署在多台Windows服务器上。

我该如何做到这一点?

1个回答

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>

在此,我们定义了自定义的MSBuild属性DeployWinServiceTargetWinServiceHost,用于控制编译后Windows服务项目输出是否安装以及安装到哪台机器上。而WinServiceName属性仅指定Windows服务在目标计算机上的名称。
在您的构建定义中,您需要在高级部分的MSBuild参数字段中明确设置DeployWinServiceTargetWinServiceHost属性:
/p:DeployWinService=true;TargetWinServiceHost=MACHINENAME

相关资源:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接