C#预处理器指令中的源代码和PDB文件中的行号

C#预处理器指令中的源代码和PDB文件中的行号,c#,.net,roslyn,preprocessor-directive,C#,.net,Roslyn,Preprocessor Directive,当使用Veracode扫描时,我项目中的一个第三方开源库引起了安全问题。然而,当我检查源代码中出现问题的行号时,它们的代码完全不同,没有任何漏洞 即使未定义符号,从PDB文件推断出的行号是否也包含预处理器指令中的源代码?C的优点之一是预处理器不能更改行号 附言:这个问题在评论中得到了回答,这是C#在一个无法更改行号的预处理器中的一个优点。所以你的猜测不太准确。正确标记您的问题,并显示确切的警告和源代码。@HansPassant是否像前面提到的另一条注释(现已删除)那样包括编译器优化?@ganes

当使用Veracode扫描时,我项目中的一个第三方开源库引起了安全问题。然而,当我检查源代码中出现问题的行号时,它们的代码完全不同,没有任何漏洞

即使未定义符号,从PDB文件推断出的行号是否也包含预处理器指令中的源代码?

C的优点之一是预处理器不能更改行号


附言:这个问题在评论中得到了回答,这是C#在一个无法更改行号的预处理器中的一个优点。所以你的猜测不太准确。正确标记您的问题,并显示确切的警告和源代码。@HansPassant是否像前面提到的另一条注释(现已删除)那样包括编译器优化?@ganeshran这是我删除的注释,但不准确,AFAIK C#编译器不会内联调用,只有JIT能做到,静态分析才不会被它欺骗。@HansPassant你能把你的评论作为答案发表吗?这样我就可以把这个问题标记为答案了#行用于修改编译器的行号和(可选)错误和警告的文件名输出。此示例显示如何报告与行号关联的两个警告。#line 200指令强制行号为200(尽管默认为#7),在下一个#line指令之前,文件名将报告为“特殊”。#line default指令将行号返回到其默认编号,这将统计由上一个指令重新编号的行。