为.NET应用程序创建交互式shell,并将脚本语言(如python / iron python)嵌入其中

StackOverflow https://stackoverflow.com/questions/808692

我正在使用标准python安装附带的教程学习python。作者对python的一个好处是“也许你已经编写了一个可以使用扩展语言的程序,并且你不想为你的应用程序设计和实现一种全新的语言”。 - 我的问题是如何设计一个程序(使用c#),可以使用Python交互式扩展(为此可能,我想我需要创建某种“shell”或“交互式“.net程序模式”?

是否有关于如何设计具有交互式shell的.NET程序的指针。然后我想在shell中使用python脚本来“扩展”或与该计划互动。

编辑:这个问题部分源于Miguel de Icaza在PDC 2008期间给出的演示,他展示了交互式csharp命令提示符,C#4.0我认为还有这个“编译器即服务”。特征。我看了一下,并认为在.NET中设计具有交互式shell的窗口或Web程序是多么酷......并且可以使用像python这样的脚本语言来扩展程序提供的功能。

此外,在阅读Steve Yegge的一篇论文后,我开始考虑这种功能,在那里他谈到了永生的系统。

有帮助吗?

解决方案

这听起来很像 IronPython

从C#设置一个简单的脚本主机以允许调用IronPython脚本,以及允许IronPython调用您的C#代码相当容易。 CodePlex网站上有一些示例和示例,展示了如何做到这一点。

示例和示例的另一个好网站是 ironpython.info

这是一个专门针对您回答问题的示例的页面,虽然是以DLR为中心的通用方式 - 这将允许您托管IronPython,IronRuby或您想要支持的任何DLR语言。

我过去曾使用这些示例在 ScrewTurn Wiki 的私有安装中创建IronPython环境 - 它允许我创建非常富有表现力的Wiki模板,并证明它非常有用。

其他提示

我正在寻找同样问题的解决方案,并找到了IronTextBox: http:// www.codeproject.com/KB/edit/irontextbox2.aspx

它需要对当前版本进行一些调整,但似乎是我需要的一切。首先进行编译,然后添加我想从shell访问范围的变量。

Python作为扩展语言被称为“嵌入Python”。

你可以通过基本调用python intepreter从c ++调用python模块并让它执行python源代码。这称为嵌入

它适用于C和C ++,并且可能在C#中也可以正常工作。

不,你不需要任何类型的“shell”。虽然Python可以是交互式的,但这根本不是必需的。

这是一篇关于添加IronRuby以编写C#应用程序脚本的博客文章的链接。

http:// blog .jimmy.schementi.com / 2008/11 /添加脚本到C-Silverlight的app.html

这些原则对于使用IronPython也很有用。

如果您的目标是避免学习新语言,可以使用 CSScript.Net 和用C#或VB进入你的应用程序。使用CSScript,您可以完全访问CLR。支持三种不同的脚本执行模型,以便您可以执行引用当前应用程序域中的对象,使用远程执行或作为shell执行的脚本。

目前我使用CCScript作为“胶水”用于配置应用程序对象的代码与使用Boo类似。

链接将您带到提供的代码项目文章一个很好的概述。

我不知道你的意思

  

"延伸"或与程序互动

所以我无法回答你的问题。你能举个例子吗?

单声道中有一个开源的交互式C#shell: http://www.mono-project。 COM / CsharpRepl

当你喜欢python,.Net和语言扩展时,你可能会喜欢 Boo 而不是Iron python。 Boo也带有一个开源的交互式shell。

我不同意

  

“你不想设计和   实现一种全新的语言   你的申请“

它并不像以前那样难以创建简单的DSL。实施它不需要几天,只需几个小时。这可能是一个有趣的选择。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top