Dot-Net

如何使用 Team Build 2010 部署 Windows 服務項目

  • February 28, 2014

我有一個 VS2010 解決方案,其中包括幾個 Windows 服務項目。我需要將這些服務部署為 Team Build 2010 中建構的一部分,並且 Windows 服務必須部署在多台 Windows Server 機器上。

我怎樣才能做到這一點?

您可以**有條件地從您的 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 服務在目標機器上的名稱。

在您的建構定義中,您必須在Advanced部分的MSBuild Arguments欄位中顯式設置DeployWinServiceTargetWinServiceHost屬性:

/p:DeployWinService=true;TargetWinServiceHost=MACHINENAME

相關資源:

引用自:https://stackoverflow.com/questions/5788648