本文介绍四种不同的获取可执行程序文件路径的方法。适用于 .NET Core 以及 .NET Framework。
本文内容
使用程序集信息获取
var executablePath = Assembly.GetEntryAssembly().Location;
这种方式的思路是获取入口程序集所在的路径。不过 Assembly.GetEntryAssembly()
能获取到的程序集是入口托管程序集;使用此方法会返回第一个托管程序集。
只有 .NET Framework 程序的入口才是托管程序(exe)。而对于 .NET Core 程序,如果直接发布成带环境依赖声明的 dll,那么实际运行的进程是 dotnet.exe;而如果发布成自包含的 exe 程序,其主 exe 也是一个非托管的 CLR 启动器而已,并不是托管程序集。
所以此方法适用条件:
- 必须是 .NET Framework 程序(.NET Core 程序不适用)