我正在尝试做一些在运行时从用户那里获取cs文件,使其对程序集有意义,获取其属性,方法等。
有没有办法通过C#中的反射来做到这一点?
答案 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,因此您可以将其用作示例代码。