基于.NET的IDE的脚本语言是什么?

时间:2010-08-18 20:03:37

标签: .net scripting dynamic-language-runtime design-decisions

我们有一个用于机器自动化的IDE,允许用户通过可视化连接对象和组件来开发解决方案。他们还可以使用C ++和C#编写“插件”。 IDE是使用.NET编写的。它的用户通常不是传统的软件开发和编程,而是更多地面向技术/电气和自动化工程师,但他们都需要了解C#和C ++编程的基础知识。

如果我们要为IDE本身引入宏/脚本语言,包括交互式控制台(仅限设计时间),我们应该选择哪种语言?它应该是一种动态脚本语言,它在.NET和DLR中具有良好的基础,因为它具有未来的证据,并且具有良好的支持和良好的动力,但也不会为我们的特殊开发人员提供如此陡峭的学习曲线。理想情况下,如果您了解C ++和/或C#,它应该是完全直观的 - 即使您不是一个坚如磐石的软件开发人员。

更新: 目前对我们最有吸引力的选项是使用动态编译的C#。我们的用户可以继续使用C#。甚至似乎可以构建一个交互式控制台,如CSI所证明的那样。您如何看待这个选项?是否有任何潜在的缺陷/缺点我们(由于我们缺乏一般的脚本编制经验)还没有意识到呢?

5 个答案:

答案 0 :(得分:2)

Python(IronPython)会得到我的投票。它是一种动态语言,可用于编写.NET程序脚本,并且可以交互使用它(实际上没有尝试过与IronPython交互,但你当然可以使用“常规”python)。不幸的是,它对你的C ++和C#开发者来说并不完全直观。

你可以使用C#作为你的脚本语言(你可以在运行时编译和执行代码),但你不会得到一个交互式控制台,而且它不像“脚本”一样。

我认为简单在脚本语言中非常重要。 Python中的“Hello World”只是print "Hello World",在C#中你需要一个命名空间,类,静态Main方法等。如果你想使用C#,你可以通过将用户提供的代码包装在里面来模拟它在编译之前,函数定义(或至少是一个类),因此它们的“脚本”可以简单地是函数的内容。这将限制他们在脚本中可以做什么,这可能是好的还是坏的,取决于你想要什么。如果他们需要多个类和函数,他们可能需要在你的情况下编写一个完整的插件。

答案 1 :(得分:2)

我认为我们要么推出我们自己的基于c#的脚本环境,就像非常酷的CS-Script的简化版本,或者我们会立即集成CS-Script。

答案 2 :(得分:1)

目前支持的动态语言IronRuby和IronPython的 DLR 的未来尚不清楚。目前尚不清楚微软在这些方面的发展方向2.在我从谷歌或更高级别听到之前,我会避免对其中任何一个做出决定。这对你今天没有帮助,为你的用户做出设计决定。我觉得IronPython会保留支持,但那只是毫无根据的猜测。

对于.NET脚本,也请考虑Boo。

  

Boo是一种面向对象的静态类型编程语言,旨在利用公共语言基础结构对Unicode,国际化和Web应用程序的支持,同时使用Python启发的语法1并特别关注语言和编译器的可扩展性。注意的一些功能包括类型推断,生成器,多方法,可选的鸭子类型,宏,真正的闭包,currying和一流的功能。

答案 3 :(得分:1)

我在应用程序中嵌入了一个小C#编辑器并编译/运行结果

ala

var codeProvider = new CSharpCodeProvider( 
              new Dictionary<string, string> { { "CompilerVersion", "v3.5" } } );

var parameters = new CompilerParameters( );
// add any of your 'library' dlls as references
parameters.ReferencedAssemblies.AddRange( dlls.ToArray( ) );
parameters.OutputAssembly = outputPath;
CompilerResults r = codeProvider.CompileAssemblyFromFile( parameters, sourceFiles );

答案 4 :(得分:1)

如果你看一下微软正在采用脚本/自动化产品的方式,那么PowerShell就是目标。

开发自定义主机和提供程序应该很好地集成到.NET应用程序中。