c# - 您会推荐 Iron Ruby、Iron Python 或 PowerShell 来使 C# 应用程序成为脚本宿主吗?

标签 c# powershell ironpython ironruby dynamic-language-runtime

您会推荐 Iron Ruby、Iron Python 或 PowerShell 来使 C# 应用程序成为脚本宿主吗?

经过一些快速的修改,现在我倾向于 powershell 主要有两个原因(请注意,这些纯粹是我的意见,如果它们是错误的,我很想知道!!!):

1) 在您的应用程序中创建带有类的运行空间很简单;因此很容易使您的应用程序可编写脚本。

2) 我听说 IronRuby 和 IronPython 正在失去 Microsoft 的支持,所以它们可能不是一个糟糕的长期解决方案?

虽然这是我第一次向应用程序添加脚本,但我欢迎从以前走过这条路的人那里得到所有建议。

具体来说,除了让我知道您是否同意我上面的两点之外,我还想知道 IronRuby 和 IronPython 是否比 powershell 更易于使用(对于用户,而不是开发人员),以及您是否有使用经验DLR 就像将对象传递给 Powershell 运行空间一样简单?如果我添加了对 DLR 和 IR/IP 脚本的支持,我的应用程序是否仍然向后兼容 XP?

最佳答案

2022 年 6 月编辑

落后我们 12 年,原始答案非常糟糕 😣

  • PowerShell 在 2012 年成为一种 DLR 语言(某种程度上)
  • IronRuby 那时基本上是废弃软件
  • PowerShell 于 2016 年开源
  • PowerShell 于 2018 年在 .NET Core 上跨平台
  • IronPython 3 于 2020 年移植到 .NET Core

与 IronLanguages 相比,Microsoft 运行的 PowerShell 开源项目的社区参与度和受欢迎程度高出多个数量级...

虽然它仍然不是设计为嵌入式脚本语言,但 PowerShell 绝对有能力用作嵌入式脚本语言。

虽然它从未与 DLR 托管模型一起使用,但它现在肯定有一个可用的托管模型。

有了新的许可,PowerShell 就可以完全再分发了。

有了扩展的操作系统支持(甚至与 ARM 的兼容性),确实没有理由不选择 PowerShell。

2010 年的原始答案:

我不相信 PowerShell 在其长期目标的任何地方都有“成为应用程序的脚本语言”。它首先是一个 shell,其次是集成和自动化引擎,第三是 shell 脚本语言……因为它根本不可再分发,所以我不确定嵌入式脚本的适用范围。

托管 PowerShell 当然非常容易——假设它已预安装在您的目标 PC 上——所以这是一个非常可行的选择,但我认为通常使用 IronRuby 或 IronPython 也一样容易。

我怀疑 DLR 本身会消失,所以我认为使用 DLR 语言仍然是一个不错的选择:您可以轻松接受其他 DLR 语言,并且 DLR 和语言是可再分发的.

此外,托管 PowerShell 的工作只会让您获得 PowerShell,而您可以利用相同的工作让 IronPython 和 IronRuby 正常工作。谁知道呢,因为 PowerShell 是一种动态语言,也许它会在未来的版本中通过适当的动态支持移植到 DLR ......但它不太可能再分发,因为微软不认为它是开发工具,而是操作系统的核心部分。

底线:使用 DLR 更加便携——不仅对于 XP,甚至对于 Mono(因此对于 Linux、OS X、iOS、Android 等...甚至通过 Silverlight 访问网络或 Windows Phone)。

关于c# - 您会推荐 Iron Ruby、Iron Python 或 PowerShell 来使 C# 应用程序成为脚本宿主吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3484232/

相关文章:

c# - 处理来自消息框的回复 C#

sql-server - 为什么 redshift 不接受我的固定宽度文本文件

object - 使用 PowerShell 的 Add-Member 会导致错误

c# - IronPython 无法导入操作系统 : ImportException: "not a Zipfile"

python - 循环遍历 Python/IronPython 对象方法

c# - 业务逻辑层设计

c# - 在 Visual Studio .Net 中创建自定义属性编辑器/生成器

c# - 如何维护和返回任务的进度?

powershell - 我缺少什么来取代我想要的一切?

.net - 如何在IronPython中创建Web服务?