簡體   English   中英

在C#中動態創建執行代碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM