我正在使用 CodeDOM 生成和编译程序集。我发现如果生成的代码无法编译,CompileAssemblyFromDom 方法会生成与 Visual Studio 生成的不同的行号。
例如,如果我在代码提供程序上调用 GenerateCodeFromCompileUnit,将生成的代码带入 Visual Studio 并尝试编译它,每个错误上的行号直接与代码行相关,但 CompilerResults 对象中返回的行号来自CompileAssemblyFromDom 方法不直接关联到生成代码的同一行。
事实证明这对我来说是个问题,因为我正在动态编译代码,如果有错误,我想显示代码并为用户突出显示有问题的行。有没有人遇到过同样的问题?
编辑: 我认为这是因为作为注释的整行在 CodeDom 提供程序报告行号时不算作一行,但它们与 Visual Studio 一起使用。有什么方法可以更改 CodeDom 提供程序的行号计算以包含注释行?