2010-01-22 4 views

Répondre

3

Vous pouvez utiliser un batch file qui arrêtera le service, construire la solution puis démarrer le service:

net stop "service name" 
<path to msbuild>\msbuild.exe <path to solution file> 
net start "service name" 

Voir comment start/stop services de la ligne de commande, et la msbuild command line reference.

Votre autre option, comme mentionné, est d'utiliser le MSBuild community tasks. Ils sont nombreux - ServiceController est le spécifique à votre besoin.

7

MSBuild est votre réponse. Le contrôle des services peut être effectué facilement en utilisant les tâches de communauté, en particulier la tâche de contrôleur de service.

http://msbuildtasks.tigris.org/

1

Est-ce le service que vous arrêtez le même exécutable que vous construisez dans la solution? Si oui, pourquoi ne pas faire du code dynamique dans le service?

+0

Que voulez-vous dire avec le code dynamique? – user137348

+0

Il semble que le code change et que vous souhaitiez automatiser ces modifications. Eh bien, vous pouvez générer du nouveau code au moment de l'exécution en utilisant System.Reflection & System.CodeDom.Compiler namespace. –

0

MS construire une partie:

<PropertyGroup> 
    <ServiceName>Service</ServiceName> 
</PropertyGroup> 
<Target Name="PostBuild"> 
    <Exec Command="net stop $(ServiceName)" ContinueOnError="true" Condition="$(ServiceName)!=''" /> 
    [. rest of the logic here .] 
    <Exec Command="net start $(ServiceName)" ContinueOnError="true" Condition="$(ServiceName)!=''" /> 
</Target> 
Questions connexes