2

ユーザーがコードを貼り付けてプリセット言語(C#、VB.NET、Python、Rubyなど)の1つを選択するテキストボックスをASP.NETページに配置する必要があり、コードが正常にコンパイルされるかどうかを確認する必要があります。そうでない場合は、エラーと警告を行番号で表示する必要があります。

どうすればこれを行うことができますか?

4

3 に答える 3

6

サポートしたいあらゆる種類のコンパイラをホストし、それらのAPIを使用する必要があります。コンパイラがAPIを公開していない場合は、APISystem.Diagnostics.Processを起動し、解析のために出力を取得するために使用する必要があります。

ただし、これは簡単な作業ではありません。
これが必要だと確信している場合は、いくつか質問してください。

  • どの言語、プラットフォーム、言語をサポートする予定ですか?PythonとRuby、それらの.NETバージョンを意味しますか、それともそれらの標準コンパイラを使用しますか?どのバージョンですか?
  • これらのコンパイラにはパブリックAPIがありますか?それらを実行可能ファイルとして実行する必要がありますか?
  • サイトが多くのユーザーによって同時に使用される場合、負荷をどのように分散する予定ですか?コンパイルは集中的なプロセスであり、多くの人がコンパイルするとサーバーが過負荷になります。また、コンパイルには常に時間がかかるため、ユーザーに提示する方法を考える必要があることにも注意してください。すぐに開始しますか、それともユーザーをキューに入れますか?
  • ユーザーコーディングスコープとは何ですか?ユーザー入力は1つのメソッドの内容に制限されていますか、それともユーザーはファイル全体を書き込む必要がありますか?デフォルトでシステムによって追加されるコードはありますか?C#コードなどの参照をどのように解決しますか?一部のライブラリはデフォルトで参照されていますか?

そして、これは氷山の一角にすぎません。

あなたのコメントに答えると、はい、 CodeDOMと呼ばれるC#およびVB.NET用のコンパイラAPIがあります。
ネット上にはたくさんの情報があります。この質問もチェックしてみてください。

于 2011-02-13T07:21:19.103 に答える
0

昨日リリースされたhttp://msdn.microsoft.com/en-us/roslynでRoslynプロジェクト(以前のCompiler as a Service)を確認することをお勧めします。これは、C#およびVB用の新しいコンパイラAPIです。PythonやRubyには役立ちませんが、出荷後(Dev 11以降)にC#とVBに必要なことを実行する必要があります。

于 2011-10-20T17:41:28.390 に答える
0

C#およびVBの場合、Roslyn CTPを使用してCompilationオブジェクトを作成してから、GetDiagnostics()メソッドを呼び出してエラーを特定します。

于 2011-10-20T17:41:29.337 に答える