Язык сценариев для .net, который поддерживает выход и сохранение состояния виртуальной машины. - PullRequest
0 голосов
/ 16 ноября 2010

Существует ли встраиваемый язык сценариев для .Net, который поддерживает какую-то доходность (программа останавливается и возвращает управление обратно на хост ... При следующем запуске она продолжается там, где остановилась)?

Кроме того, должна быть возможность сохранить состояние виртуальной машины и позволить ему продолжить работу в более поздний момент.

Edit1: Я посмотрел на lua, и хотя можно получить доступ к глобальным переменным из c #, весь метод для этого кажется хакерским.

Edit2: Я также смотрю на Ironruby, и кажется, что можно запрашивать и устанавливать глобальные переменные, но не получить их все за один раз.

Ответы [ 6 ]

1 голос
/ 29 марта 2011

bungee # - это скрипт на C #. На самом деле язык программирования, разработанный в c #, и синтаксис такой же, как в C #. Bungee # будет проектом с открытым исходным кодом в ближайшее время, но еще не опубликован. Вы сможете найти источник на codeplex. Я полагаю, это то, что вы хотите. Потому что он поддерживает почти каждое ключевое слово в c #, и есть определенные методы, а также вы можете написать новые методы в нем. Я надеюсь тебе понравится. ссылка на банджи это, но еще не опубликовано

1 голос
/ 24 ноября 2010

Бу делает.
Есть книга о создании собственного встроенного DSL в бу. Я настоятельно рекомендую прочитать (Орен Великий): http://www.manning.com/rahien/
Пример главы: http://www.manning.com/rahien/Sample1.pdf
Вот как вы можете встроить его:
http://boo.codehaus.org/Boo+as+an+embedded+scripting+language

1 голос
/ 22 ноября 2010

Запишите его на VB или C #, с четко определенным деревом классов, в котором хранится все ваше состояние.Это дерево будет состоять из корневого класса со всеми вашими данными в списках и т. Д., Которые можно сериализовать.

В соответствующий момент XML-сериализация всего выводится в файл потока.

Вклперезапустите, удалите сериализацию из сохраненного файла и начните с того места, где вы остановились.

0 голосов
/ 25 ноября 2010

В зависимости от контекста PowerShell может быть хорошим кандидатом. Документация о том, как разместить PowerShell в приложении .Net здесь , PowerShell поддерживает выполнение команд на на базы команд , а также добавление фрагментов кода в для запуска PipeLine .

Сохранение состояния vm звучит немного хитро, я не нашел ни одного свидетельство того, что это возможно с PowerShell . Вы можете однако используйте CmdLet с именем Export-Clixml , чтобы сохранить состояние любой объект, который вас может заинтересовать.

PowerShell будет хорошим совпадением, если ваши скрипты должны взаимодействовать с окружающей средой, поскольку модули PowerShell кажутся всплывающее окно для всего, кроме кухонной раковины. Это что такое поиск по CodePlex включается.

0 голосов
/ 24 ноября 2010

Я бы посоветовал еще раз взглянуть на Луа, если вы чувствуете, что что-то пошло не так, просто убедитесь, что вы все делаете правильно, а затем заверните это в класс, который потом сделает его менее счастливым.Если это проблема, то уже существует существующих управляемых решений lua, доступных для использования.Иногда вы просто не сможете найти нехакерское решение, потому что еще никто не удосужился его найти.

0 голосов
/ 21 ноября 2010

Вы пытались использовать C # как "язык сценариев"?Смотрите http://www.csscript.net для библиотеки, которая обеспечивает простую интеграцию c # как сценария в приложения.Он использует встроенный компилятор .NET для создания и загрузки новой сборки из файла или строки.Вы можете делать все, что вы можете сделать в вашем приложении, так как у вас есть полный C #.В том числе доходность.Чтобы приостановить «ВМ», вы можете позволить скрипту работать в потоке, приостановить и возобновить его.

...