Я застрял на компиляции во время выполнения и 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);
}
Отлично работает и загружает форму теста.
Но! Мне нужно передать параметр в эту форму теста (список элементов управления Panel), чтобы заполнить форму.
Как я могу это сделать? Может быть, я смотрю в неправильном направлении, и это нужно сделать по-другому?
Большое спасибо заранее!
EDIT
В конце концов, я отказался от CodeDom и вместо этого использовал Mono.Cecil , внедряя файл .exe с информацией из моей основной программы.