C # вместо IronRuby как встроенный язык сценариев в .NET 3.5 - PullRequest
4 голосов
/ 25 января 2010

Каков наилучший способ использования C # в качестве встроенного приложения для создания внутренних сценариев для приложения .NET 3.5? У меня есть приложение с несколькими небольшими скриптами IronRuby. Ничто из этого не использует динамическую природу IronRuby.

Очевидно, что использование нашего корпоративного стандарта прямо сейчас противоречит IronRuby или IronPython. Ooopps. Как лучше всего использовать C # в качестве языка сценариев?

Единственное, что мне понравилось в IronRuby, это то, что я мог вносить небольшие изменения во время работы приложения, а затем повторно запускать сценарии. Есть ли способ сделать это в C #? Или придется постоянно перезагружать приложение?

Ответы [ 4 ]

6 голосов
/ 01 марта 2010

В настоящее время вы не можете использовать C # в качестве языка сценариев, если не переключитесь на Mono.

Microsoft заявила, что эта (или аналогичная функциональность) включена в план выпуска C # версии 5, который находится далеко в будущем.

Однако в настоящее время вы можете подделать его, создав временный «файл кода» в виде строки в памяти, запустив извне компилятор C # для создания новой сборки в памяти, а затем загрузив и выполнив эту сборку. Это будет хорошо работать один раз, но если вы хотите обновить его без перезапуска, вам придется загрузить сборку в памяти в новый домен приложения и каждый раз выгружать старую (что довольно сложно).

Если честно, я бы не стал беспокоиться. C # не очень хороший скриптовый язык из-за его скомпилированной природы и статической типизации

1 голос
/ 03 августа 2010

Вы всегда можете попробовать использовать CS Script.

http://www.csscript.net/

Лично я бы предложил придерживаться сценариев IronRuby или Lua.

1 голос
/ 25 января 2010

Встраивание IronRuby для написания скриптов не так уж сложно.
Джимми Шементи (один из разработчиков IronRuby) имеет полный, подробный пример этого здесь:

http://blog.jimmy.schementi.com/2009/12/ironruby-rubyconf-2009-part-35.html

Не думаю, что это будет очень легко сделать с C #.

Извините, я знаю, что это не отвечает на ваш вопрос, но, надеюсь, он будет полезен тем, кто пытается работать с сценариями через IronRuby.

1 голос
/ 25 января 2010

Возможно, вы сможете обновить свой код C # во время работы приложения, но это не будет простым. В этой теме обсуждаются попытки сделать такую ​​вещь:

http://www.eggheadcafe.com/software/aspnet/30778032/assemblyload-and-updat.aspx

В нижней части этой темы есть ссылка на эту статью, которая выглядит полезной:

http://dotnet.sys -con.com / узел / 113340

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

...