ret-Phoenix / oscript-simple-gui

Внешняя компонента позволяет создавать формы на языке 1script. API работы с формами максимально приближен к синтаксису 1С.
55 stars 12 forks source link

Ошибка подключения внешней компоненты... #12

Closed bbslipers closed 8 years ago

bbslipers commented 8 years ago

ПодключитьВнешнююКомпоненту("oscript-simple-gui.dll");

Script started: 08.08.2016 10:32:11 {Модуль C:\1CScript\bin\test.os / Ошибка в строке: 1 / Внешнее исключение: Не удалось загрузить файл или сборку "file:///C:\1CScript\bin\oscript-simple-gui.dll" либо одну из их зависимостей. Операция не поддерживается. (Исключение из HRESULT: 0x80131515)}
ПодключитьВнешнююКомпоненту("oscript-simple-gui.dll");

ret-Phoenix commented 8 years ago

Нужно проверить пути. Самый простой вариант: положить файл в каталог со скриптом.

bbslipers commented 8 years ago

Так в данный момент и есть :(

Скриншот

ret-Phoenix commented 8 years ago

выложить архивом каталог можете? у себя проверю. Пока что не было проблем с подключением.

bbslipers commented 8 years ago

http://my-files.ru/lj37rp

ret-Phoenix commented 8 years ago

попробовал у себя - все видит. убирал свою сборку на компе, менял на Вашу. Попробуйте явно указать путь к файлу. Мне кажется проблемы с путями и поиском файлов.

ret-Phoenix commented 8 years ago

ПодключитьВнешнююКомпоненту("oscript-simple-gui.dll");

SGUI = Новый ПростойГУИ();

Сообщить("Верия: " + SGUI.Версия);

Выводит как надо...

bbslipers commented 8 years ago

Help!!! По Team Viewer получится подключится?

ret-Phoenix commented 8 years ago

AnyDesk - получится.

ret-Phoenix commented 8 years ago

Разобрались. Нужно было пересобрать проект под ОС. Буду разбираться с параметрами сборки проекта, чтобы можно было всегда просто копировать.

Спасибо за содействие.

EvilBeaver commented 8 years ago

Я проблему так и не понял. Я собираю 2013 студией и оно работает в линуксе и на винде. Просто копированием бинарников

ret-Phoenix commented 8 years ago

Собрал бинарник на Win 8.1 в VS 2015 Community - на машинах с WinServer при попытке загрузить этот бинарник: Внешнее исключение: Не удалось загрузить файл или сборку "oscript-simple-gui.dll" либо одну из их зависимостей

Если собираю бинарник в WinServer - тогда работает и на серверной ОС и на Win8.1

ret-Phoenix commented 8 years ago

хм. непонятно. скачал собранный из Master все запустилось. До этого брал файл от bbslipers и он работал только на win 8.1, на серверной ОС не пошло

EvilBeaver commented 8 years ago

Скорее всего там был включен фреймворк не 4.0, а какой-то другой

ret-Phoenix commented 8 years ago

либо как-то странно сохранился файл...

alehinsasha commented 8 years ago

У меня такая же проблема, что и у темы issue. Как ее решить?

ret-Phoenix commented 8 years ago

Каким образом был получен файл? у меня подозрение на кривую скачку. т.к. у себя теперь собираю на Win 8, и спокойно запускаю на Win 8, 10, 2012.

@bbslipers вопрос решился пересборкой проекта. но повторюсь, подозрение на кривую скачку. т.к. у меня это работает на разных машинах

alehinsasha commented 8 years ago

@ret-Phoenix Склонировал репозиторий проекта, взял файл из каталога \releases. Вообще как с этим файлом поступить правильнее? Может документацию расширить темой "Как использовать"?)

ret-Phoenix commented 8 years ago

А если попробовать скачать проект как zip файл, будет та же проблема с dll?

Может документацию расширить темой "Как использовать"?)

чем не подходит:

Т.о. примеров по работе с компонентой много. Не стоит забывать, что API практически идентичен 1С.

alehinsasha commented 8 years ago

@ret-Phoenix

Нужно проверить пути. Самый простой вариант: положить файл в каталог со скриптом.

т.к. видимо есть вариант - вопрос: где должен лежать *.dll файл?

artbear commented 8 years ago

@ret-Phoenix Включи инфу выше в офиц. документацию продукта, очень полезно для пользователей.

ret-Phoenix commented 8 years ago

Лежать - где угодно )

ПодключитьВнешнююКомпоненту / AttachAddIn() Пример:

ПодключитьВнешнююКомпоненту("C:\MyAssembly.dll"); КлассИзКомпоненты = Новый КлассИзКомпоненты(); // тип объявлен внутри компоненты ПодключитьВнешнююКомпоненту("C:\MyAssembly.dll"); КлассИзКомпоненты = Новый КлассИзКомпоненты(); // тип объявлен внутри компоненты

Подключает внешнюю сборку среды .NET (*.dll) и регистрирует классы 1Script, объявленные в этой сборке. Публичные классы, отмеченные в dll атрибутом ContextClass, будут импортированы аналогично встроенным классам 1Script. Загружаемая сборка должна ссылаться на сборку ScriptEngine.dll

Параметры

dllPath: Путь к внешней компоненте

Я предпочитаю класть в каталог с oscript, и загружать так: ПодключитьВнешнююКомпоненту(КаталогПрограммы() + "\oscript-simple-gui.dll");

ret-Phoenix commented 8 years ago

@alehinsasha Обязательно прошу проверить вариант скачки zip архивом и подключение.

alehinsasha commented 8 years ago

@ret-Phoenix как раз закончил проверять) Вместо клонирования - воспользовался вариантом Download ZIP, результат - работает.

Действия: 1) oscript-simple-gui.dll положил в каталог \OneScript\bin\ 2) подключаю так ПодключитьВнешнююКомпоненту(КаталогПрограммы() + "\oscript-simple-gui.dll"); 3) формирование формы взял из отсюда

Спасибо)

ret-Phoenix commented 8 years ago

Вот и разобрались) теперь буду бинарник выкладывать архивом. Всем спасибо.

EvilBeaver commented 8 years ago

По идее, класть компоненту в bin не нужно, начиная с 14 версии 1скрипта

ret-Phoenix commented 8 years ago

а куда нужно? мне нравится когда все в одном месте.

EvilBeaver commented 8 years ago

@ret-Phoenix в bin лежат компоненты движка, а сама внешняя компонента имеет право находиться где угодно. 1Скрипт должен уметь ее корректно загружать отовсюду.

ret-Phoenix commented 8 years ago

Что ВК может лежать где угодно знаю (https://github.com/ret-Phoenix/oscript-simple-gui/issues/12#issuecomment-239830778), есть какие рекомендации по расположению?

Думаю это обсуждение лучше вынести в отдельное место.

EvilBeaver commented 8 years ago

@ret-Phoenix рекомендаций нет, складывайте куда угодно )