【发布时间】:2021-02-07 03:21:06
【问题描述】:
ICodeCompiler comp = new CSharpCodeProvider().CreateCompiler();
CompilerParameters cp = new CompilerParameters();
cp.ReferencedAssemblies.Add("system.dll");
cp.ReferencedAssemblies.Add("system.data.dll");
cp.ReferencedAssemblies.Add("system.xml.dll");
cp.GenerateExecutable = false;
cp.GenerateInMemory = true;
StringBuilder codes = new StringBuilder();
codes.Append("using System; \n");
codes.Append("using System.Data; \n");
codes.Append("namespace Test \n");
codes.Append("{ \n");
codes.Append(" public class TestClass \n");
codes.Append(" { \n");
codes.Append(" public static string TestMethod() \n");
codes.Append(" { \n");
codes.Append(" return ""; \n");
codes.Append(" } \n");
codes.Append(" } \n");
codes.Append("} \n");
CompilerResults cr = comp.CompileAssemblyFromSource(cp, codes.ToString());
在我成功编译这个类并通过调用方法成功使用该方法后,我使用GetType(“Test.TestClass”)然后返回null。怎么了?
【问题讨论】:
-
试试
cr.CompiledAssembly.GetType("Test.TestClass")
标签: c# compiler-errors dynamic-compilation