C#コードフラグメントを動的にコンパイルして実行することは可能ですか?

esac

C#コードフラグメントをテキストファイル(または任意の入力ストリーム)に保存して、それらを動的に実行できるかどうか疑問に思っていましたか?私に提供されたものがMain()ブロック内で正常にコンパイルされると仮定すると、このコードをコンパイルおよび/または実行することは可能ですか?パフォーマンス上の理由からコンパイルしたいと思います。

少なくとも、実装する必要のあるインターフェイスを定義して、そのインターフェイスを実装するコード「セクション」を提供することができます。

ノルドール

C#/すべての静的.NET言語での最善の解決策は、そのようなことにCodeDOMを使用することです。(注として、他の主な目的は、コードのビット、またはクラス全体を動的に構築することです。)

これは、LukeHのブログからの短い例です。このブログでは、楽しみのためにLINQも使用しています。

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.CSharp;
using System.CodeDom.Compiler;

class Program
{
    static void Main(string[] args)
    {
        var csc = new CSharpCodeProvider(new Dictionary<string, string>() { { "CompilerVersion", "v3.5" } });
        var parameters = new CompilerParameters(new[] { "mscorlib.dll", "System.Core.dll" }, "foo.exe", true);
        parameters.GenerateExecutable = true;
        CompilerResults results = csc.CompileAssemblyFromSource(parameters,
        @"using System.Linq;
            class Program {
              public static void Main(string[] args) {
                var q = from i in Enumerable.Range(1,100)
                          where i % 2 == 0
                          select i;
              }
            }");
        results.Errors.Cast<CompilerError>().ToList().ForEach(error => Console.WriteLine(error.ErrorText));
    }
}

ここで最も重要なクラスCSharpCodeProviderは、コンパイラを利用してコードをオンザフライでコンパイルするクラスですその後、コードを実行する場合は、少しのリフレクションを使用して、アセンブリを動的にロードして実行する必要があります。

これはC#の別の例で、(少し簡潔ではありませんが)System.Reflection名前空間を使用してランタイムコンパイルされたコードを実行する方法を正確に示しています。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

c#コンパイラを使用して動的コンパイル用にPostSharpを追加することは可能ですか?

分類Dev

Windows 10にドライバーをインストールして、複数のコンピューターで実行することは可能ですか?

分類Dev

それはJava8バイトコードにJava11コードをコンパイルし、8上で実行することは可能ですか?

分類Dev

コンテナとして実行せずにファイルをDockerイメージにコピーすることは可能ですか?

分類Dev

.NET Core Roslynコンパイラで単一のC#コードファイルをコンパイルすることは可能ですか?

分類Dev

.NET Core Roslynコンパイラで単一のC#コードファイルをコンパイルすることは可能ですか?

分類Dev

.NET Core Roslynコンパイラで単一のC#コードファイルをコンパイルすることは可能ですか?

分類Dev

C#で、実行コマンドをリストに格納し、ループで実行することは可能ですか?

分類Dev

再コンパイルせずにすべてのLinuxディストリビューションで実行されるC / C ++ソースコードをコンパイルすることは可能ですか?

分類Dev

子フォルダーでtypescriptコンパイラーを実行することは可能ですか?

分類Dev

ルートが非ルートとしてコマンドを実行することは可能ですか?

分類Dev

スタンドアロンの実行可能ファイルとしてではなく、Cから実行したときにシェルコードのセグメンテーション違反が発生するのはなぜですか?

分類Dev

コンパイル時にカスタムプログラムを実行することは可能ですか?

分類Dev

C ++で1つのmakeコマンドを使用して、2つの異なるgccバージョンで2つの異なる実行可能ファイルをコンパイルすることは可能ですか?

分類Dev

mgoドライバーを使用してmongo replicasetコマンドを実行することは可能ですか?

分類Dev

フィールドにクエリを実行してメインコレクションフィールドを取得し、クラウドファイヤーストアのサブコレクションドキュメントでサブコレクションを取得することはできますか?

分類Dev

パーソナルインスタンスのセグメンテーションを実行し、Google API Visionから取得したネットワークを使用してクラウドの外部で実行することは可能ですか?

分類Dev

C ++実行可能ファイルを逆コンパイルすることは可能ですか?

分類Dev

yumまたはrpmに基づいてLinux上でポータブル実行可能ファイルをコンパイルすることは可能ですか?

分類Dev

C ++プログラムコンパイラは、g ++コマンドでコンパイルした後、exeファイルを自動的に実行します。

分類Dev

コマンドラインフラグを使用して特定のSnakemakeルールを有効/無効にすることは可能ですか?

分類Dev

JavaコードからJavaとCファイルをコンパイルして実行するにはどうすればよいですか?

分類Dev

typescriptコンパイラAPIを使用してASTのノードとしてコメントを取得することは可能ですか?

分類Dev

Oracle JDKを使用してJavaをコンパイルし、OpenJDKでコードを実行することは可能ですか?

分類Dev

コマンドラインからJavaScriptファイルを実行することは可能ですか?

分類Dev

Goコンパイラを使用して他のOS用の実行可能ファイルを配布することは可能ですか?

分類Dev

スクリプトを実行する前にnumbaでコードをコンパイルすることは可能ですか?

分類Dev

sonarqubeを実行するときにフラグメントコンテナとして有効なHTMLファイルが必要なのはなぜですか?

分類Dev

C#を使用してプログラムでストアドプロシージャを逆コンパイルすることが可能

Related 関連記事

  1. 1

    c#コンパイラを使用して動的コンパイル用にPostSharpを追加することは可能ですか?

  2. 2

    Windows 10にドライバーをインストールして、複数のコンピューターで実行することは可能ですか?

  3. 3

    それはJava8バイトコードにJava11コードをコンパイルし、8上で実行することは可能ですか?

  4. 4

    コンテナとして実行せずにファイルをDockerイメージにコピーすることは可能ですか?

  5. 5

    .NET Core Roslynコンパイラで単一のC#コードファイルをコンパイルすることは可能ですか?

  6. 6

    .NET Core Roslynコンパイラで単一のC#コードファイルをコンパイルすることは可能ですか?

  7. 7

    .NET Core Roslynコンパイラで単一のC#コードファイルをコンパイルすることは可能ですか?

  8. 8

    C#で、実行コマンドをリストに格納し、ループで実行することは可能ですか?

  9. 9

    再コンパイルせずにすべてのLinuxディストリビューションで実行されるC / C ++ソースコードをコンパイルすることは可能ですか?

  10. 10

    子フォルダーでtypescriptコンパイラーを実行することは可能ですか?

  11. 11

    ルートが非ルートとしてコマンドを実行することは可能ですか?

  12. 12

    スタンドアロンの実行可能ファイルとしてではなく、Cから実行したときにシェルコードのセグメンテーション違反が発生するのはなぜですか?

  13. 13

    コンパイル時にカスタムプログラムを実行することは可能ですか?

  14. 14

    C ++で1つのmakeコマンドを使用して、2つの異なるgccバージョンで2つの異なる実行可能ファイルをコンパイルすることは可能ですか?

  15. 15

    mgoドライバーを使用してmongo replicasetコマンドを実行することは可能ですか?

  16. 16

    フィールドにクエリを実行してメインコレクションフィールドを取得し、クラウドファイヤーストアのサブコレクションドキュメントでサブコレクションを取得することはできますか?

  17. 17

    パーソナルインスタンスのセグメンテーションを実行し、Google API Visionから取得したネットワークを使用してクラウドの外部で実行することは可能ですか?

  18. 18

    C ++実行可能ファイルを逆コンパイルすることは可能ですか?

  19. 19

    yumまたはrpmに基づいてLinux上でポータブル実行可能ファイルをコンパイルすることは可能ですか?

  20. 20

    C ++プログラムコンパイラは、g ++コマンドでコンパイルした後、exeファイルを自動的に実行します。

  21. 21

    コマンドラインフラグを使用して特定のSnakemakeルールを有効/無効にすることは可能ですか?

  22. 22

    JavaコードからJavaとCファイルをコンパイルして実行するにはどうすればよいですか?

  23. 23

    typescriptコンパイラAPIを使用してASTのノードとしてコメントを取得することは可能ですか?

  24. 24

    Oracle JDKを使用してJavaをコンパイルし、OpenJDKでコードを実行することは可能ですか?

  25. 25

    コマンドラインからJavaScriptファイルを実行することは可能ですか?

  26. 26

    Goコンパイラを使用して他のOS用の実行可能ファイルを配布することは可能ですか?

  27. 27

    スクリプトを実行する前にnumbaでコードをコンパイルすることは可能ですか?

  28. 28

    sonarqubeを実行するときにフラグメントコンテナとして有効なHTMLファイルが必要なのはなぜですか?

  29. 29

    C#を使用してプログラムでストアドプロシージャを逆コンパイルすることが可能

ホットタグ

アーカイブ