【发布时间】:2011-12-07 22:36:05
【问题描述】:
我正在动态编译代码,使用带有多个源的CompileAssemblyFromSource。
如果出现编译错误,我可以从 Errors 集合中检索行号等。
但是行号是所有源中的行号。我需要的是失败源中的哪个源和行号(在添加的源中)。
不做计算杂技可以吗?
【问题讨论】:
-
我会考虑改用
CompileAssemblyFromFile(至少作为调试或详细选项),这使您能够在事后查看源代码并了解发生了什么。如果您使用临时文件,您可以随时清理... -
@Paul 那应该是一个答案!
-
@Paul:写到一个我不能使用的临时文件,我害怕。在我的解决方案(存在特定问题)中,来源是从许多单独的来源(甚至来自最终用户)收集的,我只需要查看有问题的实际来源。
-
行号是来自单个来源,还是来自所有来源附加在一起?即,如果您返回第 5 行,则它可能是任何源中的第 5 行。
-
@Henrik:您是否处于无法编写临时文件的环境中?我从您的回复中猜测您的调试/详细解决方案不合适,因为您知道在生产场景中可能会出错(来自最终用户数据的代码几乎可以保证这一点!)。临时文件方法可能仍然合适,只需确保在完成后删除所有临时文件。如果你不会写临时文件,那么计算杂技可能是你唯一的解决方案...
标签: c# .net dynamic compilation compileassemblyfromsource