.NET Framework中的做法
在.NET Framework中,我们可以通过下面的代码获取当前路径
using (var p = Process.GetCurrentProcess())
{
string currentPath = p.MainModule.FileName;
}
通过这种方法获得的路径是.exe文件的完整路径。
但是,在.NET Core中,如果这么获取,将得到
C:\Program Files\dotnet\dotnet.exe
可以看到,我们得到了.NET Core Runtime的路径。这不是我们想要的结果。我们希望得到.dll文件的路径,该怎么办呢?
System.IO.Directory静态类中的方法
我们可以使用System.IO.Directory
静态类中的GetCurrentDirectory()
方法。
var directory = System.IO.Directory.GetCurrentDirectory();
Console.WriteLine(directory);
但是这个方法获得的是启动路径,也就是启动时命令行的所在路径。有时候这也不是我们想要的结果。
通过反射获取.dll文件路径
我们可以通过Assembly
抽象类的虚属性Location
获取路径。
Console.WriteLine(Assembly.GetEntryAssembly().Location);
参考资料
http://www.cnblogs.com/wangchaozhi/p/Directory_GetCurrentDirectory_CreateDirectory.html