CompileAssemblyFromSource
複数のソースを使用して、コードを動的にコンパイルしています。
コンパイルエラーが発生した場合、Errors
コレクションから行番号などを取得できます。
ただし、行番号はすべてのソース内の行番号です。必要なのは、(追加されたソースの中で) 失敗したソース内のソースと行番号です。
それは計算アクロバットをしなくても可能ですか?
CompileAssemblyFromSource
複数のソースを使用して、コードを動的にコンパイルしています。
コンパイルエラーが発生した場合、Errors
コレクションから行番号などを取得できます。
ただし、行番号はすべてのソース内の行番号です。必要なのは、(追加されたソースの中で) 失敗したソース内のソースと行番号です。
それは計算アクロバットをしなくても可能ですか?
私は自分のアプリの 1 つでこれを行い、エラーが発生した場合は、コンパイル中に生成されたすべてのエラー メッセージと共に、コンパイルされたソース (コンパイラ エラーを生成したソース) を書き出します。これらのエラー メッセージをコメントに入れて、ソース ファイルの末尾に追加します。記憶が正しければ、ソース ファイルは File.WriteAllText() で書き込まれ、ユーザーの一時ディレクトリ内のファイルに書き込まれ、そのソース モジュールへのパスで例外がスローされます。これはすべて、コンパイル エラーが発生した場合にのみ発生します。エラーがなければ、この方法でソースを書きません。
私の場合、すべてのソースを単一のモジュールに連結するため、実際にはモジュールは 1 つだけです。この状況で「143 行目」が何を意味するかについて混乱はありません。