2010-10-22 116 views
11

人们在.net应用程序中使用哪些脚本编写脚本。 MS丢弃后的新问题IronPython.net脚本语言

IP曾经是我的最爱;那么Lua

我的脚本意味着什么。我的意思是我有一个大型系统管理工具,允许用户插入一些智能,这包括程序集和脚本。我应该使用哪种语言来编写脚本。所以,我需要一个嵌入式翻译,prefably一个与.NET

的MS公告整合以及在此

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

F# - 几个人说F#。 F#可用作嵌入式脚本语言吗?

编辑:我的这个新的最好的朋友是javascript;有几个质量实现了.NET

+0

你在运行时从一个静态编译应用程序内意味着动态评价?或仅仅用于通用脚本? – 2010-10-22 14:46:05

+0

你能否澄清一下你的问题,你想添加脚本支持到你的应用程序? – Bobby 2010-10-22 14:47:53

+3

你从哪里得知微软放弃了IronPython? – abatishchev 2010-10-22 14:49:50

回答

9

Powershell的是,可以导入到你的应用程序.NET净本地脚本外壳。随着时间的推移,我已经开始使用它来完成单元测试以提供可扩展性。此外,它在7之后的每一个版本的Windows上发布,因此您不必担心安装它,并且正在努力开发基于单声道的版本。

+0

另外,Powershell允许您将.NET类对象实例化为您的脚本并使用它们的功能等。 – 2010-10-22 14:51:44

+0

我已经查看过此之前的内容,但总是觉得PS太像shell(而且托管非常困难)。你有任何指向好网站的内容,关于嵌入poweshell – pm100 2010-10-22 16:43:27

+0

对于托管powershell引擎的站点,请尝试Google(http://www.google.com/search?q=hosting+powershell)。托管绝对不难。如果你不想提供一个正式的PS主机,你也可以fork powershell.exe,并向它发送输入,收集文本输出。我为c#完成引擎执行此操作,并且运行良好。不确定你的意思是“PS太像壳”。它是一个外壳。问题是,它是否满足您对特定场景的可扩展性的要求?它是否是一个外壳可能是无关紧要的。 – Cheeso 2010-10-25 12:46:33

6

我们大部分时间都在使用C#编写脚本。在自己的应用程序中可以进行编译和集成。即使作为纯脚本的替代品是可行的,请看一下http://www.csscript.net/

过了一段时间,我遇到了IronPython。如果我不得不在我的应用程序中重新编写脚本,我会选择它,因为它证明在运行时具有更大的灵活性。无需在其他方面处理繁琐的AppDomain处理。

2

我们在2年前做出了决定,入围者是Python和Lua。那时候,IronPython得到了点头,因为它得到了MS的支持。 VBA quit getting licensed对于2007年的新客户来说,VSTA看起来要便宜得多,但是以50美元/人的价格(年收入在5到6位数的范围内),它仍然超出了老板的承受范围。

看起来我们需要重新评估我们的脚本语言决策。我们在使用这个当前应用程序,是一个许可证,5月中旬,数字和自动我们几个其他软件产品(即卖中期3〜低4位。

也许是最书适用于应用程序内的脚本是为游戏开发者编写的书籍,通常带有“AI for games”等标题。“很多其他公司赚钱,卖软件的做出了选择了一些像样的原因luapython的决定,这可能是有益的阅读一些细节解释为什么他们去那些路由

0

如果您需要自定义DSL可以使用DLR编写自己的http://en.wikipedia.org/wiki/Dynamic_Language_Runtime

最杨树品种解析器发生器我知道是ANTLR能够生成.NET分析器http://www.antlr.org/

对于简单的验证和配置脚本可以使用Spring.NET的表达式语言:http://www.springframework.net/doc-latest/reference/html/expressions.html

3

IDE脚本(VBA思考):

支持VB和C#的Visual Studios应用程序工具(VSTA)。这是当前支持的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

罗斯林(这是浪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

+0

作为一个方面说明,如果您想允许扩展性而不是座椅脚本,请考虑一个像MEF这样的插件框架。然后最终用户可以独立于您的应用程序开发插件,并可以使用f#,vb,c#,java等。 – VoteCoffee 2014-08-06 17:41:55

+0

CodeDom?罗斯林?这些不是脚本语言。这些是您可能用来构建脚本语言的工具。 – 2016-03-26 00:03:01

+0

您可以创建自己的脚本语言,但使用现有语言也有很多支持。看到这个例子:http://www.jayway.com/2015/05/09/using-roslyn-to-build-a-simple-c-interactive-script-engine/ – VoteCoffee 2016-03-27 18:36:18