Мы используем платформа без кода, где она похожа на дизайнер рабочих процессов Elsa — у вас есть различные узлы, представляющие определенные функции, и вы соединяете узлы вместе, чтобы заставить их выполнять определенные действия, что может быть так же просто, как взять файл и поместить его в другое место. Он также похож на Power Automate от Microsoft.
Платформа написана на C#, и каждый узел рабочего процесса представляет собой сборку класса, упакованную в NuGet. Этот процесс выглядит так: мы, разработчики, создаем класс C# с определенной функциональностью, собираем и упаковываем код в пакет NuGet, а затем загружаем пакет в частный репозиторий NuGet платформы без кода. Пользователи, которые позже захотят использовать нашу функциональность, просто вставляют узел, и платформа загружает NuGet, устанавливает зависимости, запускает Initialize() для класса, а затем остается открытой, слушая триггерные сигналы от других узлов.
Узел, который у меня сейчас есть, отвечает за получение информации из API и использование sqlite для кэширования результатов (назовем его №1). Я могу использовать один или два таких узла в одном рабочем процессе (процессе), и это работает хорошо. Проблема начала возникать, когда я загрузил другой узел (# 2), он работает так же, но вызывает другой API. Что платформа делает с зависимостями, так это то, что для каждого типа узла она устанавливает зависимости один раз, а затем повторно использует их для других узлов того же типа. Это то же самое, что загрузить класс с отражением один раз, а затем вызвать его много раз. Поскольку узел №2 был введен в рабочий процесс, зависимости внедряются дважды (у меня нет доступа к коду платформы, поэтому все, что я пишу о том, как работает платформа, основано на тщательных наблюдениях), во время «загрузки» Microsoft.Data.SQLite< /code> зависимость. Я вижу следующую ошибку:
Невозможно загрузить DLL «e_sqlite3» или одну из ее зависимостей: указанный модуль не найден. . (0x8007007E)
Метод Initialize(), о котором я упоминал ранее, запускается для каждого узла (подумайте об узле как об объекте, который НЕ static), я не заметил проблем, когда он вызывается дважды (это происходит, когда есть два узла №1).
Платформа и узлы работают в NET 6.
Код: Выделить всё
Microsoft.Data.SQLiteЯ подозреваю, что проблема может заключаться в том, что во время загрузки пакета происходит взаимодействие с неуправляемым кодом (бинарные файлы SQLitePCL.raw?), который не может обработать этот случай. , но я не уверен.
Я пробовал следующее:
- Укажите
- Укажите
- Вызовите SQLitePCL.Batteries.Init()
- Вызов SQLitePCL.Batteries_V2.Init()
- Проверено, совпадают ли версии зависимостей
- Попробовал сослаться на последнюю версию пакета sqlite3< /li>
Пытался упаковать «отсутствующую» .dll в NuGet
Подробнее здесь: https://stackoverflow.com/questions/790 ... e-platform
Мобильная версия