2011-04-26 8 views

Respuesta

9

Usted podría condicionalmente invocar el comando SC.exe de su archivo de proyecto de servicio de Windows (* .csproj) para instalar el servicio de Windows en una máquina remota.

He aquí un ejemplo:

<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> 

Aquí estamos definiendo la costumbre propiedades MSBuild DeployWinService y TargetWinServiceHost que se utiliza para controlar si se instalará el producto del proyecto de servicio de Windows después de la compilación y al cual la máquina. La propiedad WinServiceName simplemente especifica el nombre que el Servicio de Windows tendrá en la máquina de destino.

En su definición del build que tendrá que establecer explícitamente los DeployWinService y TargetWinServiceHost propiedades en los Argumentos MSBuild campo de la sección avanzada:

/p:DeployWinService=true;TargetWinServiceHost=MACHINENAME 

relacionados:

Cuestiones relacionadas