如何获取当前C#源代码文件的路径?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取当前C#源代码文件的路径?相关的知识,希望对你有一定的参考价值。

如何获取当前C#源代码文件或文件存储目录的路径? (我自己也在回答这个问题,因为我没有通过Google搜索找到任何内容。)

(注意:这不是要求Assembly.GetEntryAssembly().Location,它给出了可执行文件的路径,也没有要求Directory.GetCurrentDirectory(),它给出了从中调用进程的目录。)

答案

做这个:

using System.Runtime.CompilerServices;

private static string GetThisFilePath([CallerFilePath] string path = null)
{
    return path;
}

var path = GetThisFilePath(); // path = @"path	oyoursourcecodefile.cs"
var directory = Path.GetDirectoryName(path); // directory = @"path	oyoursourcecode"

它是如何工作的:Roslyn特别识别CallerFilePathCallerLineNumberCallerMemberName属性(如果你做了一些MVVM编程,最后一个可能看起来很熟悉)。在编译时,它使用这些属性标记的参数填充调用者的实际文件路径/行号/成员名称。如果编译并反编译上面的代码,对path的赋值将如下所示

var path = GetThisFilePath(@"path	oyoursourcecodefile.cs");

以上是关于如何获取当前C#源代码文件的路径?的主要内容,如果未能解决你的问题,请参考以下文章

PHP获取文件绝对路径的代码(上一级目录)

如何获取当前显示的片段?

如何获取执行程序的当前路径

如何获得当前Java文件的路径

如何通过Java代码获取tomcat服务器的绝对路径

c#中怎么获得当前路径