1)采用C#动态编译实现,直接采用C#作为脚本语言
.NET支持代码直接调用编译器的功能,在运行时动态编译一段代码字符串,然后利用反射运行。
实际项目中,发现有时候编译的时候会出现脚本锁定的问题,需要try-catch,若被锁定,则可以重新指定程序集名,重新编译。
2)采用Jscript.NET ,javascript作为脚本语言
我们都知道js中有eval函数,可以将字符串作为脚本运行。将JsScript中的eval包装成dll,然后提供给C#调用:
http://odetocode.com/articles/80.aspx
http://www.west-wind.com/weblog/posts/2007/Feb/14/Evaluating-JavaScript-code-from-C
3)如果是.NET4.0或以上版本,可以采用IronPython作为脚本引擎,Python作为脚本语言:
http://www.chrisumbel.com/article/scripting_ironpython_dlr
4) Lua作为一种流行的嵌入式脚本语言,可惜的是没有官方对.NET的支持,不过有个老外提供了一种解决方案:
http://ttuxen.wordpress.com/2009/11/03/embedding-lua-in-dotnet/
这个貌似是官方列出的LUA .NET实现: http://code.google.com/p/luainterface/
5)
codeplex开源项目:--貌似不维护了
http://flee.codeplex.com/releases/view/28952
http://ncalc.codeplex.com/
Github上:
http://www.infoq.com/cn/news/2010/11/dotnet-javascript-engine
https://github.com/paulbartrum/jurassic
https://github.com/sebastienros/jint