.NET CompileAssemblyFromSource:确定哪个源失败了?

时间:2011-10-14 17:12:31

标签: c# .net dynamic compilation compileassemblyfromsource

我正在使用具有多个来源的CompileAssemblyFromSource动态编译代码。

如果发生编译错误,我可以从Errors集合中检索行号等。

但是,行号是所有来源中的行号。我需要的是失败源中的源和行号(在添加的源中)。

没有计算杂技会有可能吗?

1 个答案:

答案 0 :(得分:0)

我在我的一个应用程序中执行此操作,如果出现错误,我会写出编译的源代码 - 生成编译器错误的源代码 - 以及编译期间生成的所有错误消息。我将这些错误消息放在注释中,并将它们附加到源文件的末尾。如果我没记错的话,源文件用File.WriteAllText()写在用户临时目录的文件中,然后我抛出一个带有该源模块路径的异常。只有在出现编译错误时才会发生这一切。如果没有错误,那么我不会这样写出来源。

在我的案例中确实只有一个模块,因为我将所有源连接到一个模块中。在这种情况下,“143行”的含义并不存在混淆。