0

我想在运行时加载和创建程序集,有人告诉我使用命名空间 System.Reflection.Assembly 和 System.Reflection.Emit。

我找到的唯一参考资料是在 msdn 上,但是当您不知道从哪里开始以及如何开始时,使用它就不太好。我已经用谷歌搜索了,但我没有找到任何有用的教程/示例/参考。

有人可以向我解释该功能或给我一些示例/教程吗?

4

2 回答 2

6

http://msdn.microsoft.com/en-us/library/saf5ce06.aspx

 public static void CompileScript(string source)
        {
            CompilerParameters parms = new CompilerParameters();
            parms.GenerateExecutable = true;
            parms.GenerateInMemory = true;
            parms.IncludeDebugInformation = false;
            parms.ReferencedAssemblies.Add("System.dll");
            // Add whatever references you might need here 
            CodeDomProvider compiler = CSharpCodeProvider.CreateProvider("CSharp");
            CompilerResults results = compiler.CompileAssemblyFromSource(parms, source);
            file.move(results.CompiledAssembly.Location,"c:\myassembly.dll");
        }
于 2012-10-01T20:45:24.573 回答
0

从源文件创建程序集的一种可能方法是简单地运行 CSC(C# 命令行编译器),将源文件和引用作为参数传递。手动 IL 生成可能太先进了,尤其是如果您想从其他人提供的代码构建程序集。

要加载 - 使用 Assembly.Load。

于 2012-10-01T21:00:38.587 回答