C#CodeDomを使用してcsファイルを動的にロード
2993 ワード
public static object Create(string path)
{
var provOptions = new Dictionary<string, string>();
provOptions.Add("CompilerVersion", "v3.5");
CodeDomProvider codeDomProvider = new CSharpCodeProvider(provOptions);
CompilerParameters compilerParameters = new CompilerParameters();
compilerParameters.GenerateExecutable = false;
compilerParameters.GenerateInMemory = true;
compilerParameters.ReferencedAssemblies.Add("mscorlib.dll");
compilerParameters.ReferencedAssemblies.Add("System.dll");
compilerParameters.ReferencedAssemblies.Add("System.Core.dll");
string[] code = new string[1];
code[0] = File.ReadAllText(path);
CompilerResults compilerResults =
codeDomProvider.CompileAssemblyFromSource(compilerParameters, code);
Assembly ass = compilerResults.CompiledAssembly;
var obj = ass.GetTypes().FirstOrDefault();
return Activator.CreateInstance(obj);
}
必ずmscorlibを参照してください.そうしないとCodeDomのコンパイルにエラーが発生します.