4

将 C# 用作 .NET 3.5 应用程序的嵌入式内部脚本应用程序的最佳实践是什么?我有一个应用程序,里面有一些小的 IronRuby 脚本。这些都没有真正利用 IronRuby 的动态特性。

显然,现在使用 IronRuby 或 IronPython 违反了我们的公司标准。哎呀。我可以使用 C# 作为脚本语言的最佳方式是什么?

我喜欢 IronRuby 的一件事是我可以在应用程序运行时进行一些小的更改,然后重新运行脚本。有什么办法可以在 C# 中做到这一点?还是必须不断重启应用程序?

4

4 回答 4

6

目前,您不能将 C# 用作脚本语言,除非您切换到 Mono。

Microsoft 已声明此(或类似功能)在 C# 版本 5 的路线图上,这还很遥远。

但是,您目前可以伪造它,方法是创建一个临时“代码文件”作为内存字符串,在外部运行 C# 编译器以生成新的内存程序集,然后加载并执行该程序集。
这一次可以正常工作,但是如果您想在不重新启动的情况下对其进行更新,则必须将内存中的程序集加载到新的应用程序域中,然后每次都卸载旧程序集(这很棘手)。

老实说,我不会打扰。由于 C# 的编译性质和静态类型,C# 不能成为一种非常好的脚本语言

于 2010-02-28T21:21:48.680 回答
1

您可能能够在应用程序运行时更新您的 C# 代码,但这并不简单。该线程讨论了尝试做这样的事情:

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

该线程的底部是本文的链接,看起来很有帮助:

http://dotnet.sys-con.com/node/113340

基本方法是将插件程序集加载到单独的 AppDomain 中,然后在要替换插件时卸载整个 AppDomain。

于 2010-01-25T18:06:48.597 回答
1

为脚本嵌入 IronRuby 并不难。
Jimmy Schementi(IronRuby 开发人员之一)在这里有一个完整的详细示例:

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

我认为用 C# 来做这件事并不容易。

抱歉,我知道这不能回答您的问题,但希望它对那些试图通过 IronRuby 处理 w/ 脚本的人有所帮助。

于 2010-01-25T19:38:39.723 回答
1

您可以随时尝试使用 CS 脚本。

http://www.csscript.net/

不过,就我个人而言,我建议坚持使用 IronRuby 或 Lua 来编写脚本。

于 2010-08-03T15:14:03.833 回答