3

ランダムサイズのデータ​​からメモリにコードを生成します。これは15Kクラスのようなものを生成する可能性があり、さらに多くの可能性があります。コードは、CSharpCodeProviderクラスのCompileAssemblyFromSourceメソッドで使用するリストに格納されています。CSharpCodeProvider、コンパイル中の進捗情報

コンパイル時に進捗報告をしたい、あるいは何が起こっているのかを知りたいのですが。今のところ私のアプリはそこに座って5〜10分待ちます。

これはどれくらいの時間がかかるかを知る方法はありますか、何が起こっているのかを知る方法はありますか?多分別のアイデアですか?答えは、このプロセスに数分かかることがあるというメッセージではないことを願っています。

+0

Task.Runとhttps://msdn.microsoft.com/en-us/library/hh193692%28v=1.0%29.aspx?f=255&MSPPError=でasync/awaitを使用する-2147217396 –

+0

できません。あなたが持っている唯一のショットは、ソースコードを複数のファイルに分割し、それぞれ別々にコンパイルすることです。これにより、ファイルをカウントダウンすることができます。 15Kのクラスでは、コードを分割する方法がたくさんあります:) –

+0

私は考えが好きです。 Cのように、リスト内の各文字列を個別にコンパイルし、それらをすべてリンクしてDLLを作成します。しかし、私はそれをプログラム的に行う方法がわかりません。 CSharpCodeProviderは、ただちにdllにコンパイルします。 –

答えて

0

私が知る限り、CodeDOMまたは新しいRoslynコンパイラでのコンパイルの進行状況を報告する方法はありません。私はこれをサポートすることが合理的な要求だと思うので、機能リクエストをthe Roslyn repoにすることを検討したいと思うかもしれません。

その間、推測に基づいて進捗状況を報告できます。あなたは通常、あなたはそれがトンに取ることを期待して、周りのトン  秒かかりますが、今のコードのメートルキロバイトをコンパイルし、nはキロバイトをコンパイルしている(入力に基づいていずれかの推測を行うことができます/Nm秒)、または最後のコンパイルに基づくか、またはその両方。

(私も別のnetmoduleに各ファイルをコンパイルすると考えられ、その後、1つのアセンブリにそれらを結合します。各ファイルがコンパイルされた後、これを使用すると、進捗状況を報告できるようになる。しかし、私はこれを行うことがちょうどそれだけの価値があまりにも複雑ではないことだと思います進捗報告を取得する)

関連する問題