32
|
Peter Mortensen icecrime · 技术社区 · 15 年前 |
![]() |
1
10
[编辑:正如本文注释中详细介绍的,假设您需要在托管代码片段或函数的地方启用内部脚本,而不是在纯粹的外部场景中提供facaade以允许用户自定义应用程序,则需要在这些场景中启用内部脚本。在更严格的预定义基础上从你的应用程序中提取内容] IronRuby和IronPython非常简洁,适合这种情况(但正如另一个答案所说,如果您有更基础结构类型的东西,那么Powershell可能是合适的)。 编辑:启用内部脚本的其他想法是
编辑2011年6月2日:Ironjs也可能是一个合适的候选人, there's a Hanselminutes that talks it thru . |
![]() |
2
13
看一看 PowerShell . 它允许您编写可编写脚本的简单cmdlet。它还支持分层容器(默认情况下,您有文件系统、注册表、证书存储等)。 |
![]() |
3
7
我建议你考虑一下 动态语言运行时 作为实现脚本接口的策略。细节: DLR目前支持 IronPython 和 IronRuby ,以及许多其他语言实现可以在 CodePlex . 如果您有兴趣创建一种特定于您的应用程序的语言,那么Bitwise Magazine有一本很好的入门书 article . 迪诺·维兰的pdc09课程 Using Dynamic Languages to Build Scriptable Applications 值得关注。你可以找到演示代码 here . |
![]() |
4
6
这个 Lua scripting language 是免费的,用于大量的商业应用程序中,并且可以使用免费可用的 LuaInterface 库,它允许您公开应用程序中脚本可以利用的类型和方法。 关于如何将lua嵌入c应用程序的教程可以找到 here . 编辑:可能还值得注意的是,lua从一开始就被设计成一种嵌入式脚本语言,因此,解释器是高度可定制的。作为安全模型的一部分,宿主应用程序几乎可以限制解释功能的任何方面;例如,允许或阻止脚本建立网络连接或写入文件等。 还有,你问过 外部的 脚本。使程序对进程外脚本可用的方法与使程序对进程外应用程序可用的方法相同:通过某种通信协议公开标准化的自动化接口。在windows上,对于同一台机器的跨进程通信,最常见的是com,但也可以是wcf、tcp remoting、rpc或任何数量的其他通信标准。您选择做什么在很大程度上取决于您的应用程序是如何构建的,以及您希望它做什么样的外部自动化。 |
![]() |
5
5
我用过 CS-Script 创造你想要的东西。在我的例子中,我在应用程序中定义了一个接口。然后只需要一个脚本来实现这个接口,这样就可以从应用程序中运行它。我的应用程序是关于处理扫描图像的,因此我的界面看起来像这样:
这样我的脚本就可以访问我在应用程序中定义的对象模型(在我的例子中是通过ibatch)。好消息是,在开发过程中,我可以使用一个普通的类库项目来编写脚本:intellisense,调试…我不记得确切的细节,但我的应用程序中有一个开关告诉应用程序使用
此外,我还制作了一个允许配置脚本的附加接口:脚本可以定义一组属性,然后由应用程序在属性网格中显示这些属性。我想我用了这个版本 here 因为这在当时看起来有点灵活。这样,您不仅可以允许用户配置脚本,还可以以描述、选择、默认值等形式提供帮助…属性网格是相当可扩展的:在一个例子中,我们有一个脚本,它将显示一个特殊的表单来定义一些复杂的设置。 编辑: 应用程序当然没有对“调试”类库的引用。只需要加载程序集… |
![]() |
6
5
|
![]() |
7
4
我不确定这是否能满足您的需求,但是通过反射,您可以编译C代码并在运行时执行它(示例代码 here ) 所以您可以用eg.c编写脚本,然后编译“it on the fly”,并直接在应用程序的上下文中运行它。当然,您必须牢记安全考虑,但是如果脚本是可信的,那么它可能对您有用,并且您可以从为脚本使用强大的托管语言中获益。 如果您需要高性能或运行数千个脚本,可能会太慢。 |
![]() |
8
3
我实现了 CS-Script 作为我写的工作流系统的最后一个脚本平台。每个wrokflow需要不同的条件,这些条件决定了哪些用户将订阅不同的任务以及哪些用户将接收电子邮件。使用脚本模型,可以很容易地将新步骤引入到工作流中,并处理这些任务所需的独特需求。 脚本模型的另一个好的副产品是工作流可以在各种条件下进行测试,并且可以采取迭代的方法来最终确定工作流行为。在qa和用户接受测试期间,我在脚本中包含了一些日志功能,以便更容易地发现问题。 使用cs脚本,您可以完全访问对象;也就是说,当脚本导入程序集时,您可以在脚本代码中实例化对象。此外,您还可以保留已编译的脚本并简单地向它们提供参数。如果程序集使用参数对象或字典,则可以传递该脚本并对参数对象中包含的对象执行方法。 |
![]() |
Emopusta · 从后端到前端的图像路径不工作 2 年前 |
![]() |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
![]() |
Niyazi Babayev · 如何在表达式中动态应用表达式? 2 年前 |
|
Dansih · .Net核心自定义身份验证方案 2 年前 |
![]() |
lolorekkk · 面板插入。NET WinForm 2 年前 |