Comments 9
простите, но вы, как минимум, на год опоздали.
Сейчас гораздо лучше брать Roslyn и интегрировать его.
Ох сколько вам открытий чудных…
Во-первых, если вы будете исполнять скрипты чуть больше чем hello world, вдруг выяснится отличие интерпретируемых от компилируемых языков — фаза компиляции ни разу не бесплатная. И если у интерпретируемых она естественным образом встроена в воркфлоу, то у шарпа вполне можно огрести заметные тормоза на ней.
Потом обнаружится, что «гадить» в общий домен временными сборками скрипта — идея так себе, особенно если вспомнить, что удалить однажды загруженную сборку из домена невозможно (это слегка коррелирует с наличием временных файлов .dll, но проблема совсем в другом). А если делать по-науке и плодить домены, то придется изрядно позаниматься любовью с передачей нетривиальных параметров между доменами.
А статей на эту тему достаточно. Даже на хабре поиск по CSharpCodeProvider выдает вполне адекватную подборку.
Во-первых, если вы будете исполнять скрипты чуть больше чем hello world, вдруг выяснится отличие интерпретируемых от компилируемых языков — фаза компиляции ни разу не бесплатная. И если у интерпретируемых она естественным образом встроена в воркфлоу, то у шарпа вполне можно огрести заметные тормоза на ней.
Потом обнаружится, что «гадить» в общий домен временными сборками скрипта — идея так себе, особенно если вспомнить, что удалить однажды загруженную сборку из домена невозможно (это слегка коррелирует с наличием временных файлов .dll, но проблема совсем в другом). А если делать по-науке и плодить домены, то придется изрядно позаниматься любовью с передачей нетривиальных параметров между доменами.
А статей на эту тему достаточно. Даже на хабре поиск по CSharpCodeProvider выдает вполне адекватную подборку.
Хочется добавить, что решение проблемы (необходимость скриптовать некие сценарии) с помощью CodeDOM не совсем верно в общем случае (а случай в статье как раз общий, ни слова о конкретном сценарии).
Полезность примера выводящего «Hello world» в данном случае тоже близка с 0.
Единственно что обьяснили — это как скормить исходник и получить список ошибок, а это, извините, на статью не тянет, тема не раскрыта вообще от слова «полностью».
Я в свое время (эмм… десять лет назад) использовал CodeDOM для пре-компиляции формул (вызывался метод, тело которого пользователь писал на C#, методу передавался список входных/выходных параметров, которые можно было использовать в вычислениях и логике и возвращать результат), с появление Roslyn это конечно смешно (хотя уверен новичкам сгодилось), и тут эта статья…
Полезность примера выводящего «Hello world» в данном случае тоже близка с 0.
Единственно что обьяснили — это как скормить исходник и получить список ошибок, а это, извините, на статью не тянет, тема не раскрыта вообще от слова «полностью».
Я в свое время (эмм… десять лет назад) использовал CodeDOM для пре-компиляции формул (вызывался метод, тело которого пользователь писал на C#, методу передавался список входных/выходных параметров, которые можно было использовать в вычислениях и логике и возвращать результат), с появление Roslyn это конечно смешно (хотя уверен новичкам сгодилось), и тут эта статья…
добавлять функции и объекты для доступа к объектам разрабатываемой системы
Необходимо реализовать у объекта интерфейс IDispatch. В C# с использованием рефлексии реализация доступа к методам и свойствам будет элементарен.
проводить синтаксический контроль исходного скрипта и генерировать сообщения о синтаксических ошибках
А чем этот момент не устроил в ActiveScriptSite? В ошибке будет указан и номер строки и что за ошибка.
выполнять скрипт в пошаговом режиме, подобно отладчику, с нотификацией точки исполнения и статусом.
С этим вопросом тоже все очень просто.
https://docs.microsoft.com/en-us/scripting/winscript/active-script-debugging-overview
Вроде бы ClearScript самое оно
https://clearscript.codeplex.com/
https://clearscript.codeplex.com/
В этом отношении идеальный вариант это web-сервер на Forth, конфигурируемый Forth и со скриптингом на Forth.
Sign up to leave a comment.
«Мечта лентяя» или скриптовый движок на самом себе