我被困在運行時編譯和CodeDom。 下面是我迄今爲止的一個簡單例子。如何在c#,winforms的運行時編譯中傳遞參數?
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控件列表)以填充表單。
我該怎麼做?也許,我看着錯誤的方向,它必須以不同的方式完成? 非常感謝!
編輯 最後,我放棄的CodeDOM和使用Mono.Cecil代替,注入.exe文件從我的主節目信息。
也許你可以傳遞該參數作爲命令行參數,並在子應用程序中處理它? – khachik 2011-04-14 12:27:52
@khachik謝謝你的回答!請您提供更多關於如何在動態編譯中將參數傳遞給命令行的信息? – 2011-04-14 12:41:04
你能解釋你的要求嗎?我不清楚。 – 2011-04-14 12:53:05