Прошу помощи с контейнеризацией
Atom Ответить
09.01.2021


Здравствуйте!

Написал робота на последней версии S#. Использую Transaq Connector. Пытаюсь завернуть приложение в контейнер Docker. Локально, без контейнера, все работает отлично. Но при попытке соединения в приложении в контейнере выдает ошибку. Приходит exception на событие Connector.ConnectionError:

Код
Error load library txmlconnector.dll. (Parameter 'dllPath')


Код
at Ecng.Interop.Marshaler.LoadLibrary(String dllPath)
at Ecng.Interop.DllLibrary..ctor(String dllPath)
at #=z$v7B9Iu3PqOtBWiwGjTeuTIBQG7A..ctor(String #=zWUnOCRY=, #=zGon05jN$zqu0 #=z$SosFX8=)
at #=zfFAR89tKbzSwRbMRwZT08jN8htD7UjYzvw==..ctor(Action`1 #=z$SosFX8=, Action`1 #=zuVX1g4Bj32l1, String #=zWUnOCRY=, Boolean #=z1BrZqexflzIZ, Boolean #=zpNZ3xedpXleK, String #=zEYFvlw2lUDMt, ApiLogLevels #=z9eSLFMNKlQa7)
at StockSharp.Transaq.TransaqMessageAdapter.#=zAxO2KDE=()
at StockSharp.Transaq.TransaqMessageAdapter.OnSendInMessage(Message message)
at StockSharp.Messages.MessageAdapter.SendInMessage(Message message)


Dockerfile стандартный:



Пробовал запускать на разных runtime (nano, core), не помогает. Код, собранный в конейнере (и выдернутый из него), запускается на локальной машине отлично. Т.е. проблема именно в среде выполнения и методе загрузки txmlconnector.dll. Исходников Ecng.Interop, чтобы подсмотреть, у меня нет и я не знаю куда копать. Помогите!

Теги:


Спасибо:




5 Ответов
Павел

Фотография
Дата: 09.01.2021
Ответить


Автора первого полезного ответа ждет вознаграждение.
Автор топика
Спасибо:

sprite

Фотография
Дата: 09.01.2021
Ответить


Такая же ошибка возникает если завернуть приложение в UWP
Попробуйте жестко задать путь к txmlconnector.dll
https://doc.stocksharp.r...ssageAdapter_DllPath.htm
Спасибо: Павел

Павел

Фотография
Дата: 09.01.2021
Ответить


sprite Перейти
Такая же ошибка возникает если завернуть приложение в UWP
Попробуйте жестко задать путь к txmlconnector.dll
https://doc.stocksharp.r...ssageAdapter_DllPath.htm


Спасибо за наводку!

Но не помогло. Попробовал принудительно задать абсолютный и относительные пути, разные варианты с косыми и прямыми чертами, пробовал заранее копировать dll в контейнер. Не помогло :(.
Автор топика
Спасибо:

sprite

Фотография
Дата: 09.01.2021
Ответить


Еще может надо копать в сторону Docker + C++ MSVC, так как есть подозрение что transaqxml.dll это использует.
https://devblogs.microso...ner-for-your-c-projects/
Но я не знаю и сам не пробовал.
Спасибо: Павел

Павел

Фотография
Дата: 11.01.2021
Ответить


Кстати, я даже попробовал установить все версии vcredist в контейнер, не помогло.
Автор топика
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy