C#如何添加要在运行时执行的代码

我知道这个要求对你们很多人来说似乎很受欢迎,但这是我的项目要求之一。 是否可以在Sp中添加代码并在.Net exe中执行。 就像在按钮上单击我调用一个SP,SP返回几行代码,然后程序执行代码。

有可能,如果是,那么如何?

我正在使用框架1.1

搜索“动态c#代码执行”,谷歌从2002年开始提供这个博客…这可能对你有用..

http://www.west-wind.com/presentations/dynamiccode/dynamiccode.htm

本文引用System.CodeDom.Compiler来动态编译程序集,然后使用Reflection来执行该代码。 听起来很有趣 ;)

编辑:正如DaveL建议的那样: 是否有可能动态编译和执行C#代码片段?

如果您正在讨论将TSQL编译到表中,然后通过C#运行此TSQL,是的,这是可能的。 您需要做的是为TSQL脚本文件(.sql)编写一个简单的解析器。 解析器将读取SQL脚本并在每个GO语句中将TSQL语句添加到相关的SQL Server表中(该表可能有两列1.要运行的数据库/要运行的进程名称.2。查询本身)。 然后,您可以在运行时动态执行这些TSQL块。

如果你正在谈论运行编译成SQL Server数据表的C#,这是一个不同的球类游戏,我不知道一个简单的方法来做到这一点(它是可能的)。

我希望这有帮助。

另一种可能性

通过在数据库中使用varbinary等二进制数据类型,可以将Assemblies存储在表中作为二进制数据。 然后,您可以从数据库中读取该二进制数据,在本地存储它,通过Assembly.LoadFrom()加载程序Assembly.LoadFrom() ,然后使用reflection来查找可以使用的某些特殊类型或入口点。

你可能想要DLR(D代表Dynamic),遗憾的是这是.NET 4.0以上版本。

听起来像是一个糟糕的遗留代码netherworld; 而不是你。

您可以创建自己的脚本语言以在您的应用程序中运行,但它会很慢而且不理想。 像YACC这样的东西可以帮助你顺利进行,但这是一个颠簸的旅程(看到有人在Java中尝试这种行为)。