
Сообщение от
BorschovAN
Будет ли (или есть) возможность создать/вызвать некую winform (именно свою) c элементами интерфейса...
Такая возможность есть и сейчас.
1. Создаете проект в VS, тип проекта - Библиотека классов. В самом проекте создаете нужную вам форму. Собираете проект и получаете .dll-файл.
2. В MasterSCADA создаете скрипт, в окне редактирования скрипта, справа внизу выбираете вкладку "Ссылки на dll", на которой справа вверху кнопка "Добавить" (в виде плюса"). Нажимаете и выбираете .dll-файл с вашей библиотекой формы. Это действие скопирует ваш .dll-файл в каталог текущего проекта MasterSCADA (каталог \<Имя проекта>\dll_dt\).
3. Пропишите само название вашей .dll-ки во вкладке "Ссылки на dll". Также во вкладке "Пространства имен" пропишите использование вашего namespace'a.
4. В скрипте вызовите объект вашей формы:
Код:
public override void DoAction()
{
MyForm form = new MyForm();
form.Show();
}
Пробовал вышеописанный метод для WPF, получилось.
Не отходя от кассы, задам вопросы, которые появились при проведении вышеописанных манипуляций (не к автору вышеуказанного сообщения, а к разработчикам MasterSCADA).
Вопрос #1: При использовании собственной DLL в MasterSCADA, эта DLL ищется либо в папке текущего проекта (каталог \<Имя проекта>\dll_dt\), либо в папке с самой СКАДой (каталог \MPSSoft\MasterSCADA 4D 1.2\bin\), однако это не всегда удобно, т.к. сам скрипт, использующий кастомную DLL, может находится в пользовательской библиотеке (каталог \Users\Public\Documents\MasterSCADA4D1.2\Libraries \<Имя библиотеки>\). Можно ли заставить MasterSCADA искать DLL-ки в пользовательской библиотеке, не трогая environment variables ОС?
Вопрос #2: Для запуска собственной формы из скрипта MasterSCADA, использовалась пользовательская библиотека классов WPF, собранная для .NET Core 3.1. Однако если собрать эту же библиотеку для .NET 5.0 или выше, то при компиляции скрипта вываливалась ошибка о несовместимости версий. Есть ли какие-нибудь конкретные требования/ограничения на подключаемые собственные DLL-ки?

Сообщение от
BorschovAN
... произвести операции в ней с чем то (например с БД)?
Не очень понял вопроса, с БД можно работать и без MasterSCADA?
Если имеется ввиду взаимодействие собственной формы с проектом MasterSCADA (именно с проектом, на этапе его создания/редактирования, т.к. скрипты не предназначены для работы в run-time!, а для иного есть ФБ), то есть два варианта:
Вариант 1: Часть логики будет в самой кастомной форме, а часть - в скрипте. Взаимодействие между логиками через поля и события кастомной формы.
Вариант 2: Вся логика в кастомной форме, в нее же передаются данные о проекте - ссылка на экземпляр класса InSAT.Framework.Script.UI.Services.ScriptBase.
НО! Это все теория, на практике не проверял
.