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

发布于 2024-12-09 15:29:36 字数 184 浏览 0 评论 0原文

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

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

但是行号是所有源中的行号。我需要的是失败源中的哪个源以及行号(在添加的源中)。

不进行计算杂技这可能吗?

I'm dynamically compiling code, using the CompileAssemblyFromSource with multiple sources.

In the event of a compile error I can retreive the line number etc. from the Errors collection.

However the line number is the line number within all sources. What I need is which source and the line number from within the failed source (among the added sources).

Is that possible without doing calculation acrobatics?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

雨轻弹 2024-12-16 15:29:36

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

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

I do this in one of my apps, and if there is an error, i write out the source that was compiled - the source that generated the compiler error - along with all error messages generated during the compile. I put these error messages in comments and append them to the end of-the source file. The source file gets written with File.WriteAllText() if i remember correctly, in a file in the user temp directory, and then i throw an exception with the path to that source module. All this happens only if there's a compile error. If no error, then i don't write out the source this way.

There really is just one module in my case because i concatenate all source into a single module. There is no confusion about what "line 143" means in this situation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文