.net языки сценариев

Что люди используют для написания сценариев в .net-приложениях. Новый вопрос после MS капель IronPython

IP был моим любимым; затем Lua

Что я подразумеваю под сценарии. Я имею в виду, что у меня есть большой инструмент управления системой, который позволяет пользователям подключать биты умности, включая сборки и скрипты. Какой язык я должен использовать для скриптов. Поэтому мне нужен встроенный интерпретатор, возможно, тот, который хорошо интегрирован с .net

Объявление MS здесь

http://www.theregister.co.uk/2010/10/22/microsoft_kills_dynamic_languages_projects/

F # - несколько человек сказали F #. Является ли F # пригодным для использования в качестве встроенного языка сценариев?

EDIT: Мой новый лучший друг для этого - javascript; существует несколько реализаций качества для .net

Ответ 1

Powershell - это оболочка сценариев .net net native, которую можно импортировать в ваше приложение. Со временем я стал использовать его для выполнения всего, от модульного тестирования до обеспечения расширяемости. Кроме того, он поставляется в каждой версии Windows после 7, так что вам не нужно беспокоиться об его установке, и прилагаются усилия для разработки моно-версии.

Ответ 2

Мы используем С# большую часть времени для создания сценариев. Компиляция и интеграция "на лету" возможны внутри собственных приложений. Даже если замена чистого сценария возможна в хорошем смысле, посмотрите http://www.csscript.net/

Через некоторое время я столкнулся с IronPython. Если бы мне пришлось переделать скрипты в моем приложении, я бы выбрал его, поскольку он демонстрирует большую гибкость во время выполнения. Нет необходимости в утомительной обработке AppDomain среди других аспектов.

Ответ 5

Сценарии IDE (думаю, VBA):

Инструменты Visual Studios для приложений (VSTA), которые поддерживают VB и С#. Это текущее поддерживаемое решение для Microsoft и предназначено для замены VSA и VBA. Некоторое время они пренебрегали им, но взяли его обратно. VSTA похож на VBA и предоставляет среду IDE. Используемый конец необходимо будет установить VSTA на своей бесплатной машине.

http://www.microsoft.com/en-us/download/details.aspx?id=38806

Прямой текст:

PowerShell

http://blogs.msdn.com/b/kebab/archive/2014/04/28/executing-powershell-scripts-from-c.aspx

Roslyn (это заменяет CodeDom, но все еще находится в состоянии предварительного просмотра)

https://roslyn.codeplex.com/

http://msdn.microsoft.com/en-us/vstudio/roslyn.aspx

CodeDom (немного тяжелее, чем вы могли бы захотеть)

http://msdn.microsoft.com/en-us/library/y2k85ax6.aspx

http://www.codeproject.com/Articles/12852/Compile-and-Run-VB-NET-Code-using-the-CodeDom

http://www.codeproject.com/Articles/3289/Dynamic-Code-Generation-and-Code-Compilation

DynamicMethod (мне это нравится, потому что я могу определить код как функцию с конкретными параметрами и возвращает. Он сужает скрипты именно так, как вы хотите)

http://msdn.microsoft.com/en-us/library/system.reflection.emit.dynamicmethod.aspx

Ответ 8

Мы приняли решение почти 2 года назад, а финалистами были Python и Lua. В то время IronPython получил кивок, потому что он поддерживался MS. VBA перестали получать лицензию новым клиентам еще в 2007 году, VSTA выглядит намного дешевле, но стоит 50 долларов США/мест (с ежегодным обязательством в высоком От -5 до 6-разрядного диапазона), он все еще находится за пределами того, что примет босс.

Похоже, нам нужно переоценить наше решение для языка сценариев. Текущее приложение, в котором мы это используем, - это лицензия на средние 5 цифр и автоматизирует несколько других наших программных продуктов (которые продаются в среднем от 3 до 4 цифр).

Вероятно, книги, наиболее применимые для сценариев внутри приложений, - это книги, написанные для игровых разработчиков, обычно с такими названиями, как "AI для игр". Многие другие компании, которые зарабатывают деньги на продаже программного обеспечения, приняли решение выбрать lua или python по некоторым порядочным причинам, и может быть полезно прочитать некоторые детали, объясняющие, почему они пошли по этим маршрутам.

Ответ 9

Отвечая в 2018 году:

Возможно, вы захотите взглянуть на MS ClearScript https://github.com/Microsoft/ClearScript

Это JavaScript (V8-движок), который вы можете встроить в приложение .NET

Ответ 10

Если вам нужен пользовательский DSL, вы можете написать свой собственный, используя DLR. http://en.wikipedia.org/wiki/Dynamic_Language_Runtime

Самый генератор poular parser, который я знаю, является antlr, который может генерировать синтаксические анализаторы .NET http://www.antlr.org/

Для простых сценариев проверки и конфигурации вы можете использовать язык выражения Spring.NET: http://www.springframework.net/doc-latest/reference/html/expressions.html

Ответ 11

Для тех, кто ищет поддержку .Net Standard/Core, V8.Net теперь поддерживает ее. Вы также можете использовать его в веб-приложениях ASP.NET, если вы когда-либо хотели создавать сценарии на серверной части. Сейчас я использую его в проекте VPL (FlowScript) для добавления серверных сценариев, которые также предоставляют избранные типы .Net в движке V8.

nuget

Ответ 12

Частично вопрос в том, что вы хотите, чтобы язык был похож. Может быть, вы хотите полную мощность и гибкость С#. Или, может быть, вы хотите, чтобы это было немного проще, чтобы его могли использовать люди, которые могут не быть настоящими программистами.

Я только что опубликовал свою библиотеку Silk на GitHub для .NET. Он использует второй подход и использует язык без чрезмерной пунктуации и не учитывает регистр. Это также очень плохо с типами данных.

Это очень просто в использовании. Просто зарегистрируйте функции, которые ваш код делает доступными для скрипта, скомпилируйте исходный код в байт-код и запустите его. Когда вызывается одна из ваших функций, возникает событие, и ваш код может реализовать эту функцию.