Мне бы хотелось иметь скрипт, который останавливает определенную службу Windows, создает или перестраивает решение и запускает службу после завершения процесса сборки.
Должен ли я использовать Msbuild для этого? Или есть другой способ?
MSBuild - ваш ответ. Управление службами может быть легко осуществлено с помощью задач сообщества, в частности задачи контроллера служб.
http://msbuildtasks.tigris.org/
Вы можете использовать командный файл , который остановит службу, создаст решение и запустит службу:
net stop "service name" <path to msbuild>\msbuild.exe <path to solution file> net start "service name"
Узнайте, как запускать / останавливать службы из командной строки, а справочную информацию по командной строке msbuild .
Другой вариант, как уже упоминалось, заключается в использовании задач сообщества MSBuild . Их много - ServiceController - именно тот, который вам нужен.
Служба, которую вы останавливаете, - это тот же исполняемый файл, который вы строите в решении? Если так, то почему бы не сделать динамический код в сервисе?
MS сборка:
<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>