我想在运行时加载和创建程序集,有人告诉我使用命名空间 System.Reflection.Assembly 和 System.Reflection.Emit。
我找到的唯一参考资料是在 msdn 上,但是当您不知道从哪里开始以及如何开始时,使用它就不太好。我已经用谷歌搜索了,但我没有找到任何有用的教程/示例/参考。
有人可以向我解释该功能或给我一些示例/教程吗?
我想在运行时加载和创建程序集,有人告诉我使用命名空间 System.Reflection.Assembly 和 System.Reflection.Emit。
我找到的唯一参考资料是在 msdn 上,但是当您不知道从哪里开始以及如何开始时,使用它就不太好。我已经用谷歌搜索了,但我没有找到任何有用的教程/示例/参考。
有人可以向我解释该功能或给我一些示例/教程吗?
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");
}
从源文件创建程序集的一种可能方法是简单地运行 CSC(C# 命令行编译器),将源文件和引用作为参数传递。手动 IL 生成可能太先进了,尤其是如果您想从其他人提供的代码构建程序集。
要加载 - 使用 Assembly.Load。