:基本的にCompile a C# Array at runtime and use it in code?
、あなたがたCodeDOMにあなたのテキストファイルを引き出し、それをコンパイルしたいと思います。その後、実行ヘルパーとしていくつかの動的メソッドを作成すると役立つでしょう。
- は、任意のコンパイラ/構造エラー
- との契約は、LINQの式を使用してヘルパーメソッドを作成したCodeDOM
- に文字列としてファイルを読んでアップロードされたファイル
- ファイルに、必要な検証を実行
- を受信します新しいクラスと既存のコードの間のリンケージがコンパイルされたオブジェクトと橋渡しされるようにします(そうでなければ、リフレクションを使用してすべての新しいメソッドを呼び出す必要があります)
var csc = new CSharpCodeProvider(new Dictionary<string, string>() { { "CompilerVersion", "v4.0" } });
var cp = new CompilerParameters() {
GenerateExecutable = false,
OutputAssembly = outputAssemblyName,
GenerateInMemory = true
};
cp.ReferencedAssemblies.Add("mscorlib.dll");
cp.ReferencedAssemblies.Add("System.dll");
StringBuilder sb = new StringBuilder();
// The string can contain any valid c# code
sb.Append("namespace Foo{");
sb.Append("using System;");
sb.Append("public static class MyClass{");
sb.Append("}}");
// "results" will usually contain very detailed error messages
var results = csc.CompileAssemblyFromSource(cp, sb.ToString());
また、このトピックを参照してください:Implementing a scripting language in C#。 DLRのIronPythonがあなたのニーズに適しているかもしれません。
これは可能ですが、C#コンパイラを呼び出す必要があります。あなたのmodがdllにコンパイルされるのを簡単にすることができます。そして、dllをロードして、リフレクションで呼び出すことができます。 – Blorgbeard
おそらくRoslynを使用して調べる必要があります – Prescott