从第n行获取Sorce代码

时间:2017-11-19 21:34:12

标签: c# .net

是否可以动态获取源代码?像这样:

虚拟代码:

 1 int x = 5;
 2 string y = "";
 3 string codeFromLine1 = SomeClass.SomeMethod("currentfilename", 1)

codeFromLine1< ===> " int x = 5;"

2 个答案:

答案 0 :(得分:1)

C#编译成IL;您发送的应用程序几乎肯定将不会以任何方式包含源代码,而IL 可以反转回C#(使用正确的工具,假设它没有被故意混淆了,它在原始来源上并不总是相同的,并且行号根本没有意义。总的来说:没有。在一些非常具体的案例中:可能。

答案 1 :(得分:1)

如果您有权访问原始代码文件

int lineNo = 1;
string codeLine = File.ReadLines(fileNameOfSourceCode)
    .Skip(lineNo - 1);
    .First();

这可能对设计时工具有用;但是,我不知道它在运行时的用途。请注意,如果在Debug配置中编译代码并包含* .PDB文件,则异常会生成文件名,行号和列号。我也可以使用Release配置;但是,代码优化器可能会让人感到困惑。