Я думаю, ты сможешь. Вы можете легко вызвать любой процесс в MSBuild, используя задачу . Однако проблема с этим заключается в том, что задача exec будет ожидать завершения процесса Selinium, прежде чем продолжить, что не является желаемым поведением. Вы хотите запустить процесс, поддерживать его во время сборки, а затем завершать его по окончании сборки.
Поэтому, я думаю, вам, вероятно, понадобится создать специальную задачу MSBuild для этого. В следующем посте приведен пример созданных кем-то задач, которые будут запускаться асинхронно, возвращая элемент управления обратно в сценарий сборки:
http://blog.eleutian.com/2007/03/01/AsyncExecMsBuildTask.aspx
А для примера вызова Java-программы из MSBuild (но в этом случае синхронно) взгляните на мою задачу, которая вызывает Ant из MSBuild здесь
http://teamprise.com/products/build/
В рамках вашей задачи MSBuild вы захотите вывести созданный вами идентификатор процесса в выходное свойство, чтобы в конце сценария сборки вы могли вызвать другую пользовательскую задачу MSBuild, которая убивает процесс. Это можно сделать, посмотрев идентификатор процесса, переданный в MSBuild как переменную, а затем вызвав Process.Kill метод, т. Е.
Process process = Process.GetProcessById(ProcessId);
process.Kill();
При этом вам нужно быть осторожным, чтобы убедиться, что ваша задача уничтожения всегда выполнялась в MSBuild, следя за тем, чтобы она была включена в пути ошибок и т. Д. В сборке. Возможно, вы могли бы сделать вещи немного более устойчивыми, если бы стартовая задача selenium RC искала другие процессы seleniumRC и убила их перед запуском нового - таким образом, если процесс по какой-то причине не закрылся должным образом, он будет работать только до следующая сборка.
Во всяком случае, мой ответ звучит как большая работа, так что, надеюсь, кто-то еще найдет более легкий путь. Возможно, вы сможете создать процесс seleniumRC в тестовом наборе, запустите тесты FitNesse и уничтожить его в разорванном наборе, или же вы сможете написать пользовательскую задачу, которая расширяет ваши задачи RunN FitNesse и запускает seleiniumRC асинхронно перед запустить процесс тестирования и затем убить его.
Удачи,
Martin.