12

CSharpCodeProviderアプリのインスタントプラグインをコンパイルするために使用します。

現在、ファイルをコンパイルしようとすることは可能です。これは見た目は良いですが、多くのエラーが生成されます。たとえば、バイナリ ファイルに貼り付けられた C# コードなどです。で扱われる多くの文字がありますerror CS1056: Unexpected character

この動作は予期されたものですが、このような「悪意のある」ファイルのコンパイル プロセスには非常に時間がかかります。

私が妥当だと思う解決策の 1 つは、エラーの数を制限することです。その後、エラーがCSharpCodeProvider.CompileAssemblyFromFile返されます。

そのような制限を設定することは可能ですか?

回避できるのであれば、そもそもファイルを非常に注意深く検査したくありません。

4

1 に答える 1

1

これを制御できる CSharpCodeProvider のプロパティまたはフィールドがあるかどうかはわかりませんが、考えられる解決策は、質問を変更することです-問題がエラーの数ではなく、コンパイルの試行にかかる時間であるかどうか、私の解決策は CSharpCodeProvider を別のタスクで実行することですが、完了するのに時間がかかりすぎる場合はタスクを強制終了します。

次に、独自のエラー メッセージを指定できます。

「あなたのコードは悪すぎます。5 分以内にコンパイルすることはできません。」:P

セキュリティに関しては、Application.Run を介して別の AppDomain で実行してみてはいかがでしょうか。アプリケーションがどれほど複雑かはわかりませんが、プラグインが挿入されたメイン フォームの新しいインスタンスを開始する場合があります。

于 2014-02-10T04:18:22.817 に答える