我是否有可能将我的一些代码以非编译形式放入我的应用程序中,然后即时对其进行更改,然后应用程序可以直接使用新版本?
如果可能(我秘密知道它使用CodeDOM),是否有任何问题需要注意使用这种方法进行可插拔性(除了代码保护问题)?
有可用的例子我可以重复使用吗?
你已经说过你知道如何使用CodeDOM - 为什么不使用它?
如果你对它是C#代码感到满意,那就CSharpCodeProvider
做一个令人钦佩的工作.如果您有更多的冒险精神,您可能需要考虑Boo - 阅读Ayende Rahien关于在Boo中构建DSL的书籍,以获取更多信息和建议.
有关使用的示例CSharpCodeProvider
,您可以从我在深度网站的C#中下载Snippy .基本上Snippy允许你键入代码片段并运行它,而不必费心去声明类等.它没有比构建和运行代码更多的功能,所以它是一个非常方便的例子:)
有关更多示例,请在Stack Overflow上搜索CSharpCodeProvider.这是一个简短但完整的代码 - "hello world"的代码被编译然后执行.
using System; using System.CodeDom.Compiler; using Microsoft.CSharp; class Test { public static void Main(string[] args) { string code = @" using System; class CodeToBeCompiled { static void Main() { Console.WriteLine(""Hello world""); } }"; var codeProvider = new CSharpCodeProvider(); var parameters = new CompilerParameters { GenerateExecutable = true, OutputAssembly = "Generated.exe" }; var results = codeProvider.CompileAssemblyFromSource (parameters, new[] { code }); results.CompiledAssembly.EntryPoint.Invoke(null, null); } }