Мы пишем сложное полнофункциональное настольное приложение, и нам необходимо обеспечить гибкость форматов отчетов, поэтому мы подумали, что просто представим нашу объектную модель на языке сценариев. Было время, когда это означало VBA (который все еще возможен), но производная VSTA с управляемым кодом (я думаю), похоже, исчезла на корню.
Что сейчас является лучшим выбором для встроенного языка сценариев в Windows .NET?
Ответы:
Я использовал CSScript с потрясающими результатами. Это действительно сократило необходимость делать привязки и другие вещи низкого уровня в моих скриптовых приложениях.
источник
Лично я бы использовал C # в качестве языка сценариев. Платформа .NET (и Mono, спасибо Мэтью Шарли) фактически включает в себя компиляторы для каждого из языков .NET в самой структуре.
По сути, реализация этой системы состоит из двух частей.
Разрешить пользователю компилировать код Это относительно просто и может быть выполнено всего в нескольких строках кода (хотя вы можете добавить диалоговое окно с ошибкой, которое, вероятно, будет на пару десятков строк кода больше, в зависимости от того, насколько пригодно для использования). вы хотите, чтобы это было).
Создание и использование классов, содержащихся в скомпилированной сборке. Это немного сложнее, чем на предыдущем шаге (требуется небольшое отражение). По сути, вы должны рассматривать скомпилированную сборку как «плагин» для программы. Существует довольно много руководств о различных способах создания системы плагинов на C # (Google - ваш друг).
Я реализовал «быстрое» приложение, чтобы продемонстрировать, как вы можете реализовать эту систему (включает 2 рабочих сценария!). Это полный код приложения, просто создайте новый и вставьте код в файл "program.cs". На этом этапе я должен извиниться за большой кусок кода, который я собираюсь вставить (я не собирался делать его таким большим, но немного увлекся своими комментариями)
источник
csscript.net
похоже, это какая-то обертка над этим. По сути, это простая реализация. Я думаю, что лучше было бы спросить: «Что csscript.net делает для меня, а это нет». Я не знаю, что делает csscript, но они точно знают, что делает приведенный выше код, у них он (или что-то очень похожее) есть в их библиотеке.IronPython . Вот обзор того, как это встроить .
источник
Механизм PowerShell был разработан так, чтобы его можно было легко встроить в приложение, чтобы сделать его доступным для сценариев. Фактически, PowerShell CLI - это просто текстовый интерфейс для движка.
Изменить: см. Https://devblogs.microsoft.com/powershell/making-applications-scriptable-via-powershell/
источник
Бу язык.
источник
Сейчас я предпочитаю язык сценариев Lua . Он маленький, быстрый, чистый, полностью документированный, хорошо поддерживаемый, имеет отличное сообщество , он используется многими крупными компаниями в отрасли (Adobe, Blizzard, EA Games), безусловно, стоит попробовать.
Чтобы использовать его с языками .NET, проект LuaInterface предоставит все, что вам нужно.
источник
Почему бы не попробовать C #? У Mono есть отличный новый проект, особенно для динамической оценки C #:
http://tirania.org/blog/archive/2008/Sep-10.html
источник
IronRuby, как упоминалось выше. Для меня как программиста на C # интересным проектом является поддержка C # Eval в Mono . Но он пока недоступен (будет частью Mono 2.2).
источник
Еще одно голосование за IronPython. Встраивать его просто, взаимодействие с классами .Net просто, ну и Python.
источник
Я могу предложить S #, который я поддерживаю в настоящее время. Это проект с открытым исходным кодом, написанный на C # и предназначенный для приложений .NET.
Первоначально (2007-2009) он размещался на http://www.codeplex.com/scriptdotnet , но недавно был перемещен на github.
источник
Попробуйте Ela . Это функциональный язык, похожий на Haskell, и его можно встроить в любое приложение .Net. Даже у него есть простая, но удобная IDE.
источник
Я еще не пробовал, но выглядит довольно круто:
http://www.codeplex.com/scriptdotnet
источник
Я только что создал плагин для клиента, позволяющий им писать код C # в модулях, которые действуют так же, как VBA для Office.
источник
Раньше я использовал Lua ; в приложении Delphi, но его можно встроить во многие вещи. Он используется в Adobe Photoshop Lightroom .
источник
Мне нравится писать сценарии на самом C # . Сейчас, в 2013 году, появилась неплохая поддержка сценариев C #, для него становится доступно все больше и больше библиотек.
Mono имеет отличную поддержку сценария кода C # , и вы можете использовать его с .NET, просто включив
Mono.CSharp.dll
в свое приложение. Для приложения сценариев C #, которое я сделал, проверьте CShellТакже проверьте ScriptEngine в Roslyn от Microsoft, но это только CTP.
Как уже упоминали некоторые люди, CS-Script тоже существует довольно давно.
источник