ランタイム コンパイルと CodeDom に行き詰まっています。これは、私がこれまでに持っているものの簡単な例です。
public static void Testing()
{
CodeDomProvider codeProvider = CodeDomProvider.CreateProvider("CSharp");
string Output = "Out.exe";
System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = true;
parameters.OutputAssembly = Output;
parameters.ReferencedAssemblies.Add("System.dll");
parameters.ReferencedAssemblies.Add("System.Drawing.Dll");
parameters.ReferencedAssemblies.Add("System.Windows.Forms.Dll");
parameters.CompilerOptions = "/t:winexe";
string[] text = new string[] { @"C:\MyProject\Test.cs", @"C:\MyProject\Test.Designer.cs",
@"C:\MyProject\Program.cs"};
CompilerResults results = codeProvider.CompileAssemblyFromFile(parameters, text);
Process.Start(Output);
}
これは問題なく動作し、Test フォームをロードします。
しかし!このテスト フォーム (パネル コントロールのリスト) にパラメーターを渡して、フォームに入力する必要があります。
これどうやってするの?たぶん、私は間違った方向を見ているので、別の方法で行う必要がありますか? よろしくお願いします!
EDIT 最後に、CodeDom をあきらめ、代わりに Mono.Cecil を使用し、メイン プログラムからの情報を .exe ファイルに挿入しました。