我有一个VS2010解决方案,其中包括几个Windows服务项目。我需要将这些服务部署为Team Build 2010中的构建的一部分,并且必须在多台Windows Server计算机上部署Windows服务。
我该怎么做?
答案 0 :(得分: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属性DeployWinService
和TargetWinServiceHost
,它们用于控制是否在编译后安装Windows Service项目的输出以及安装到哪台机器。 WinServiceName
属性只是指定Windows服务在目标计算机上的名称。
在构建定义中,您必须在 MSBuild Arguments 字段中明确设置DeployWinService
和TargetWinServiceHost
属性>高级部分:
/p:DeployWinService=true;TargetWinServiceHost=MACHINENAME
相关资源: