[英]Dynamically create executing code in C#
所以,我有一個奇怪的問題(也許如此愚蠢),但是...所以,我的任務。 我有同一個班級,給我同樣的功能。 因此,在我意識到的主程序中(是的,它是客戶端服務器應用程序)),我想為此類動態創建“ .exe包裝器”-最簡單的代碼如下:
class Program
{
private SameClass mySameClass;
static void Main(string[] args)
{
mySameClass = new mySameClass(args);
Console.Readline();
}
}
總的來說,我想創建一個主應用程序,它通過動態代碼生成在獨立的過程中創建從站。 那么,如何制作和控制它呢? 謝謝。
因此,SameClass應該包含與您希望多次運行的進程相同的功能和功能……我想您需要的是線程。
不太確定動態含義是什么,而是假設您有一個事件,該事件在需要新的SameClass進程時觸發。 趕緊跑
SameClass newClone = new SameClass(args);
Trhead _thread = new Thread(new ThreadStart(newClone.Start));
_trhead.Start();
您可能可以在SameClass中進行一些優雅的處理和重構,但是很難理解您的問題,所以我想這是您希望能夠回答的最好的問題。
找到基於CodeDom的解決方案。 是的,不需要反思,對不起。 代碼示例:
using System;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
using System.Diagnostics;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
var compiler = new CSharpCodeProvider();
var parameters = new CompilerParameters(new[] { "mscorlib.dll", "System.Core.dll" }, "foo.exe", true);
parameters.CompilerOptions = "/platform:x64";
parameters.GenerateExecutable = true;
CompilerResults results = compiler.CompileAssemblyFromSource(parameters,
@"using System;
class Program {
public static void Main(string[] args) {
Console.WriteLine(""Hello world!"");
Console.ReadLine();
}
}");
var testProcess = new Process();
testProcess.StartInfo.FileName = results.CompiledAssembly.CodeBase;
testProcess.Start();
Console.WriteLine("I've run slave!");
Console.ReadLine();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.