2011-04-26 88 views

回答

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和用来控制是否Windows服务项目的输出将编译后进行安装和TargetWinServiceHost到机器。 WinServiceName属性只是简单地指定了Windows服务在目标机器上的名称。

在你构建定义你必须在的MSBuild参数明确设置DeployWinServiceTargetWinServiceHost性能高级领域:

/p:DeployWinService=true;TargetWinServiceHost=MACHINENAME 

相关资源:

相关问题