Сделал решение, чтобы можно использовать имя шаблона и не искать его guid.
Заметил интересную особенность: бывают два разных guid на одно имя шаблона. Поэтому запускаю сразу два или останавливаю сразу два.

Буду благодарен, если комьюнити поддержит кнопкой "спасибо".

Так же будут признателен, если будите делиться ссылочкой на это сообщение при будущих вопросах/ответах.
Для начала нужно добавить в using'и две строчки:
gif ↓ кликабельна
Посмотреть вложение 97794
using System.Xml;
using ZennoLab.InterfacesLibrary.Enums.Log;
и
Добавить в GAC:
Посмотреть вложение 97799
1. Вводим для поиска "xml"
2. Выбираем System.Xml.dll
3. Жмем "OK"
Кубик C#:
//string name = "ZennoLabAlerts";
string name = project.Variables["nameProject"].Value; // из переменной ZM
// *ПРИМЕР* Запустить шаблон с именем *Раскомментировать кусок если нужен запуск*
//foreach (KeyValuePair<Guid, string> pair in GetDictionaryTasksForZennoPoster(ZennoPoster.TasksList).Where(keyValuePair => name == keyValuePair.Value))
//{
// project.SendToLog($"Задача найдена: {pair.Key}:::{pair.Value}", LogType.Info, true, LogColor.Green);
// Guid id = pair.Key;
// ZennoPoster.StartTask(id); // запуск задачи
//}
// *ПРИМЕР* Остановить шаблон с именем *Раскомментировать кусок если нужен остановка*
//foreach (KeyValuePair<Guid, string> pair in GetDictionaryTasksForZennoPoster(ZennoPoster.TasksList).Where(keyValuePair => name == keyValuePair.Value))
//{
// project.SendToLog($"Задача найдена: {pair.Key}:::{pair.Value}", LogType.Info, true, LogColor.Green);
// ZennoPoster.StopTask(pair.Key); // остановить задачу
//}
// получить словарь с guid и именами шаблонов
Dictionary<Guid, string> GetDictionaryTasksForZennoPoster(IEnumerable<string> zennoTasksList)
{
Dictionary<Guid, string> tasksDictionary = new Dictionary<Guid, string>();
List<string> tasksList = new List<string>(zennoTasksList);
if (tasksList.Count == 0)
throw new Exception("Нет задач в ZennoPoster");
foreach (string zennoTask in tasksList)
{
string xpathGetId = "Task/Id";
string xpathGetNameTask = "Task/Name";
XmlDocument doc = new XmlDocument();
doc.LoadXml($"<Task>{zennoTask}</Task>");
string idTask;
string nameTask;
// Получить id задачи
XmlNode nodeIdTask = doc.SelectSingleNode(xpathGetId);
if (nodeIdTask != null)
idTask = nodeIdTask.InnerXml;
else
throw new InvalidDataException($"{xpathGetId} не найден");
// Получить name задачи
XmlNode nodeNameTask = doc.SelectSingleNode(xpathGetNameTask);
if (nodeNameTask != null)
nameTask = nodeNameTask.InnerXml;
else
throw new InvalidDataException($"{xpathGetNameTask} не найден");
// Записать в словарь
if (Guid.TryParse(idTask, out Guid id))
{
project.SendInfoToLog($"✅ {idTask}:::{nameTask}", false);
tasksDictionary.Add(id, nameTask);
}
else
throw new FormatException($"Не удалось получить guid {idTask}\nИмя шаблона: {nameTask}");
}
return tasksDictionary;
}
upd: мелкие правки.
Если будут вопросы, пишите, вся информация есть в подписи.
Ниже приложил шаблон для примера ↓