При работе с внешним скриптом в ТСЛаб есть одно значительное неудобство: если используем разные DLL, то необходимо их все указывать в скрипте, порой даже те, которые находятся в папке с установленной программой, что не очень удобно.

Вариант решения подсказал Andrew Vozyakov (@andreypro007) из группы ТСЛаб - это использование проекта ILRepack для сборки DLL. Есть различные варианты использования данного проекта, начиная от использования в составе своих .Net-проектов путем добавления NuGet-пакета и заканчивая разными вариантами использования консольного приложения. Один из вариантов использования консольного приложения выложил Andrew Vozyakov, в данном варианте запускается сборка проекта в VS, после чего скомпилированные библиотеки собираются в одну. Второй вариант, который мне больше подходит я собрал по описанию проекта. Суть варианта:
  • скомпилированные библиотеки при сборке проекта копируются в определенную общую папку, в данном случае D:\Utilities\ILRepack\Libs. Как настроить данное копирование описано в документации ТСЛаб.
  • подготавливаем папку для работы консольного приложения. Структура папки может быть любой. Мне было удобнее сделать так как на скрине, посему в качестве примера приведу именно этот вариант. Папка Libs - это скопированные библиотеки, как настроить которые указано в пункте выше. Папка Out - здесь будет сгенерирована общая сборка, то есть общая библиотека, включающая в себя все библиотеки размещенные в папке Libs. Папка TSLabDLL - сюда автоматически копируются необходимые библиотеки из установочной папки ТСЛаб, которые необходимо включить в общую сборку.

  • Формируем bat-файл для последовательного запуска этапов сборки. Структура файла будет скорее всего понятна любому человеку, кто более менее дружит с программированием, тому, кто совсем не дружит данный материал вряд ли будет интересен, поэтому внутреннее содержимое файла пояснять не буду, оно само себя хорошо раскрывает. Pause в конце файла можно убрать, чтобы при запуске консоль закрывалась автоматически, при запуске в VS данный оператор роли не играет.

  • В Visual Stidio в разделе PostBuildEvents указываем строку запуска нашего bat-файла.

  • В итоге получаем следующий процесс сборки: при сборке своего проекта DLL копируется в папку Libs, по окончании сборки автоматически запускается bat-файл, который запускает механизм сборки общей библиотеки. По окончании сборки библиотека копируется по указанному пути в общую папку из папки Out
  • Финальный этап - установка ссылки во внешнем скрипте на данную библиотеку. В итоге имеем всего одну ссылку на библиотеку, которая включает в себя все, что необходимо для работы конкретного скрипта.

================================
Удобно, быстро, не надо "таскать" за каждым скриптом кучу DLL.
Архив папки с консольной утилитой, bat-файлом и структурой папок прилагаю.


Attachments
bat-файл.jpg (207 downloads)
PostBuildEvent.jpg (204 downloads)
ВнешнийСкрипт.jpg (202 downloads)
ПапкаПроекта.jpg (203 downloads)
ILRepack.zip (81 downloads)



Отредактировано AleksandrGanov (Sat Jan 29 2022 07:22 PM)