Я боролся с той же проблемой. Не удалось найти какой-либо другой подробный способ, кроме сценариев VBS Решение, которое я придумал, следующее:
Я создал решение C # .Net, которое ссылается на NAnt.Core. Я создал два класса (задачи), которые наследуются от класса Nant Task. Вам нужно три вещи:
1) Поместите атрибут TaskName в класс
[TaskName("startupComApplicationTask")]
2) Поместите атрибут Task в любые свойства, которые вы хотите передать из Nant
[TaskAttribute("machineName", Required = true)]
3) Реализация метода ExecuteTask ()
Окончательный результат был примерно таким:
[TaskName("startupComApplicationTask")]
public class StartupComApplicationTask: Task
{
private string _applicationName;
private string _machineName;
[TaskAttribute("applicationName", Required = true)]
public string ApplicationName
{
get
{
return _applicationName;
}
set
{
_applicationName = value;
}
}
[TaskAttribute("machineName", Required = true)]
public string MachineName
{
get
{
return _machineName;
}
set
{
_machineName = value;
}
}
protected override void ExecuteTask()
{
COMAdminCatalog objAdmin = new COMAdminCatalog();
objAdmin.Connect(MachineName);
var objCollection = (COMAdminCatalogCollection)objAdmin.GetCollection("Applications");
objCollection.Populate();
foreach (COMAdminCatalogObject objAppNames in objCollection)
{
if (objAppNames.Name.Equals(ApplicationName))
{
ICatalogCollection objComponents = (ICatalogCollection)objCollection.GetCollection("Components", objAppNames.Key);
objComponents.Populate();
}
}
objAdmin.StartApplication(ApplicationName);
}
}
Очевидно, что для этого вам нужно включить ссылку на сборку взаимодействия ComAdmin. Который вы можете найти в "COM + 1.0 Type Library" в ваших ссылках Com.
Создайте проект, который создаст две библиотеки для вас. Интероп один и твой. Перетащите их в свою папку nant (в каталоге bin).
Вы можете вызвать их изнутри Нанта следующим образом:
<startupComApplicationTask machineName="193.132.119.249" applicationName="NantTest" />
Повторите для выключения, просто вызовите ShutdownApplication вместо StartApplication.
Надеюсь, это поможет