有没有办法在运行时将类文件加载到程序集?

时间:2008-11-14 14:34:39

标签: c# reflection

我正在尝试做一些在运行时从用户那里获取cs文件,使其对程序集有意义,获取其属性,方法等。

有没有办法通过C#中的反射来做到这一点?

2 个答案:

答案 0 :(得分:10)

要动态编译文件,你需要在这些行上做一些事情(其中sourceCode是一个包含要编译的代码的字符串):

CodeDomProvider codeProvider = new CSharpCodeProvider();
ICodeCompiler compiler = codeProvider.CreateCompiler();

// add compiler parameters
CompilerParameters compilerParams = new CompilerParameters();
compilerParams.CompilerOptions = "/target:library /optimize";
compilerParams.GenerateExecutable = false;
compilerParams.GenerateInMemory = true;         
compilerParams.IncludeDebugInformation = false;
compilerParams.ReferencedAssemblies.Add("mscorlib.dll");
compilerParams.ReferencedAssemblies.Add("System.dll");

// compile the code
CompilerResults results = compiler.CompileAssemblyFromSource(compilerParams, sourceCode);

答案 1 :(得分:4)

您可以使用CSharpCodeProvider轻松编译它。您可以从C# in Depth web site下载我的代码段编译器Snippy的源代码。它使用CSharpCodeProvider,因此您可以将其用作示例代码。