Script Function Library — различия между версиями

Материал из archestra.info
Перейти к: навигация, поиск
(Импорт DLL библиотеки)
(Удаление DLL библиотеки)
 
(не показано 13 промежуточных версии 2 участников)
Строка 12: Строка 12:
 
#*Запустить AppEngine.
 
#*Запустить AppEngine.
 
#*Повторить с шага 1
 
#*Повторить с шага 1
 +
<div id="dc_vk_code" style="display:none"></div>
 +
<span style="color:#ff0000"><br/></span>
  
 +
*<span style="color:#ff0000">Application server will detect changes in the new dll only if you have re-compiled the new dll with a greater major release</span>
 +
*<span style="color:#ff0000">Application Server определит изменения в DLL ТОЛЬКО если dll-ка была откомпилирована с версией большей, чем предыдущая</span>
 +
 +
==== Комментарий из практики ====
 +
Про выше описанный алгоритм:
 +
<pre>
 +
Причём работает только с обязательным удалением dll на узле GR. Для этого надо закрыть и IDE, и SMC. Неудобно, мягко говоря.
 +
 +
1. Раздеплоить объект
 +
2. Остановить энжн
 +
3. Закрыть всё
 +
4. Удалить dll из каталога ArchestrA
 +
5. Запустить IDE
 +
6. Импортнуть новую dll, с бОльшим главным номером версии
 +
7. Запустить энжн
 +
8. Задеплоить объект
 +
9. ---
 +
10. Разработка dll
 +
11. Увеличение главного номера версии (может просто изменение? Может не обязательно главного? Не проверял пока)
 +
12. Компиляция
 +
13. Шагать к п.1
 +
 +
 +
Бывает, что при попытке удаления dll с узла GR (узел IDE: у меня это один и тот же узел) ОС MS Windows говорит, что dll занята процессом GR (даже при закрытой IDE, при закрытой SMC).
 +
 +
Тогда надо открыть IDE и просто импортировать dll. Сразу после этого закрыть IDE и уже тогда удалять dll из папки – dll будет свободна.
 +
 +
</pre>
  
 
== Удаление DLL библиотеки ==
 
== Удаление DLL библиотеки ==
Строка 21: Строка 51:
  
  
== Импорт DLL библиотеки ==
+
Кроме это есть инструкция (Wonderware North): [http://wonderwarenorth.com/techtip-removing-custom-net-libraries-from-industrial-application-server-3-0/ TechTip: Removing Custom .NET libraries from Industrial Application Server 3.0]
  
#Point to Import on the Galaxy menu and then click Script Function Library.
+
Более подробная инструкция: TN471 Removing a .NET Control: https://softwaresupportsp.invensys.com/Pages/OKMArticleResult.aspx?docId=TN471
#In the Import Script Function Library dialog box, browse to locate the library file (.aaSLIB, .dll, .wdf, .tlb and .olb extension). Select the file and click Open or Cancel to end the import function.
+
#Click OK in the final message box. The Galaxy imports the designated library makes its functions available to all IDEs connected to the Galaxy through the script function browser on the Script page of the object’s editor.
+
  
If the library’s name is identical to the name of a library that has been previously imported into the Galaxy, you are prompted to replace the library or rename the library being imported. Also, if you replace an existing script function library and redeploy the objects using it, you must restart the objects’ AppEngine for the new script function library to take effect.
+
== Импорт DLL библиотеки ==
 
+
 
+
 
+
<br/>Источник: [https://wdn.wonderware.com/sites/WDN/Lists/Solution%20Central%20Q%20and%20A/display.aspx?List=a9ff589d-c336-4bcf-807f-e3260856359a&ID=3330 https://wdn.wonderware.com/sites/WDN/Lists/Solution%20Central%20Q%20and%20A/display.aspx?List=a9ff589d-c336-4bcf-807f-e3260856359a&amp;ID=3330]
+
<div id="dc_vk_code" style="display:none"></div>
+
  
 +
#В [[ArchestrA IDE]], меню Galaxy->Import->Script Function Library.
 +
#Выбрать файл содержащий библиотеку (допустимые типы файлов: .aaSLIB, .dll, .wdf, .tlb and .olb extension) и нажать открыть
 +
#По завершении импортированные наборы классов/функций будут доступны в скриптах (и объектов и ArchestrA символов), в том числе для выбора через Script Function Library
 +
#*Важно!!! При установке такого же набора библиотек повторно (но может быть другой версии) потребуются действия описанные в разделе [[Script_Function_Library#.D0.A3.D0.B4.D0.B0.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_DLL_.D0.B1.D0.B8.D0.B1.D0.BB.D0.B8.D0.BE.D1.82.D0.B5.D0.BA.D0.B8|Удаление библиотеки]]
  
*<span style="color:#ff0000">Application server will detect changes in the new dll only if you have re-compiled the new dll with a greater major release<br/></span>
+
*<span style="color:#ff0000">Application server will detect changes in the new dll only if you have re-compiled the new dll with a greater major release</span>
 
*<span style="color:#ff0000">Application Server определит изменения в DLL ТОЛЬКО если dll-ка была откомпилирована с версией большей, чем предыдущая</span>
 
*<span style="color:#ff0000">Application Server определит изменения в DLL ТОЛЬКО если dll-ка была откомпилирована с версией большей, чем предыдущая</span>
  

Текущая версия на 11:23, 14 апреля 2017

Работа с расширениями библиотеки

Последовательность разработки

  1. Разработать библиотеку, например в Visual Studio. NET.
  2. Импортировать библиотеку в IDE.
  3. Написать необходимый скрипт и задеплоить объект (лучше для деплоя использовать тестовый AppEngine - не основной)
  4. Отладить скрипт
  5. Если требуется обновить библиотеку (например, после расширения функционала), то:
    • раздеплоить объект(ы)
    • Сделать Shutdown AppEngine для выгрузки из памяти .NET функционала
    • Запустить AppEngine.
    • Повторить с шага 1


  • Application server will detect changes in the new dll only if you have re-compiled the new dll with a greater major release
  • Application Server определит изменения в DLL ТОЛЬКО если dll-ка была откомпилирована с версией большей, чем предыдущая

Комментарий из практики

Про выше описанный алгоритм:

Причём работает только с обязательным удалением dll на узле GR. Для этого надо закрыть и IDE, и SMC. Неудобно, мягко говоря.

1.	Раздеплоить объект
2.	Остановить энжн
3.	Закрыть всё
4.	Удалить dll из каталога ArchestrA
5.	Запустить IDE
6.	Импортнуть новую dll, с бОльшим главным номером версии
7.	Запустить энжн
8.	Задеплоить объект
9.	---
10.	Разработка dll
11.	Увеличение главного номера версии (может просто изменение? Может не обязательно главного? Не проверял пока)
12.	Компиляция
13.	Шагать к п.1


Бывает, что при попытке удаления dll с узла GR (узел IDE: у меня это один и тот же узел) ОС MS Windows говорит, что dll занята процессом GR (даже при закрытой IDE, при закрытой SMC).

Тогда надо открыть IDE и просто импортировать dll. Сразу после этого закрыть IDE и уже тогда удалять dll из папки – dll будет свободна.

Удаление DLL библиотеки

Если необходимо, можно в ручную удалить импортированную ранее библиотеку.

Для этого: необходимо удалить DLL файлы из каталога:

Program Files\ArchestrA\Framework\FileRepository\'name of galaxy'\Vendors\ArchestrA


Кроме это есть инструкция (Wonderware North): TechTip: Removing Custom .NET libraries from Industrial Application Server 3.0

Более подробная инструкция: TN471 Removing a .NET Control: https://softwaresupportsp.invensys.com/Pages/OKMArticleResult.aspx?docId=TN471

Импорт DLL библиотеки

  1. В ArchestrA IDE, меню Galaxy->Import->Script Function Library.
  2. Выбрать файл содержащий библиотеку (допустимые типы файлов: .aaSLIB, .dll, .wdf, .tlb and .olb extension) и нажать открыть
  3. По завершении импортированные наборы классов/функций будут доступны в скриптах (и объектов и ArchestrA символов), в том числе для выбора через Script Function Library
    • Важно!!! При установке такого же набора библиотек повторно (но может быть другой версии) потребуются действия описанные в разделе Удаление библиотеки
  • Application server will detect changes in the new dll only if you have re-compiled the new dll with a greater major release
  • Application Server определит изменения в DLL ТОЛЬКО если dll-ка была откомпилирована с версией большей, чем предыдущая

Другие темы