using System; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; namespace HttpClientStudy.Core.Utilities { /// /// 应用工具类 /// public class AppUtility { /// /// 获取应用运行时各种路径 /// /// public static IDictionary GetApplicationPaths() { var pathDic = new Dictionary() { //当前运行的exe的完整路径,包含exe文件名,只用于WinForm {"Application.ExecutablePath",("程序集基完整路径(仅WinForm)", "Application.ExecutablePath 只适用于WinForm") }, //程序的启动路径:只用于WinForm {"Application.StartupPath",("程序集启动路径(仅WinForm)", "Application.StartupPath 只适用于WinForm") }, //当前执行的exe或启动项目的路径,通过AppContext {"AppContext.BaseDirectory",("执行或启动路径",AppContext.BaseDirectory) }, //当前执行的exe的目录,不包含exe名,使用AppDomain {"AppDomain.CurrentDomain.BaseDirectory",("程序集解析程序用于探测程序集的基目录",AppDomain.CurrentDomain.BaseDirectory) }, //程序安装或启动基目录 包含应用程序的目录的名称 {"AppDomain.CurrentDomain.SetupInformation.ApplicationBase",("程序安装或启动基目录",AppDomain.CurrentDomain.SetupInformation.ApplicationBase) }, //当前进程的主模块路径,包含exe名 {"Process.GetCurrentProcess().MainModule.FileName",("当前进程的主模块路径",Process.GetCurrentProcess()?.MainModule?.FileName) }, //环境变量:用户当前工作目录的完整限定路径 {"Environment.CurrentDirectory",("用户当前工作目录的完整限定路径",Environment.CurrentDirectory) }, //环境变量:当前exe的完整路径,包含exe名,通过命令行参数 {"Environment.GetCommandLineArgs()[0]",("当前exe的完整路径",Environment.GetCommandLineArgs()[0]) }, //当前工作目录的路径(可变) {"Directory.GetCurrentDirectory",("当前工作目录的路径(可变)",Directory.GetCurrentDirectory()) }, //当前Assembly的加载路径,包含dll或exe名 {"Assembly.GetExecutingAssembly().Location",("当前Assembly的加载路径",Assembly.GetExecutingAssembly().Location) }, //入口程序集的路径 {"Assembly.GetEntryAssembly().Location",("入口程序集的路径",Assembly.GetEntryAssembly()?.Location) }, //已过时:当前程序集的CodeBase路径,可能为file URI格式 //{"Assembly.GetExecutingAssembly().CodeBase",("当前程序集的CodeBase路径",Assembly.GetExecutingAssembly()?.CodeBase) }, //已过时:入口程序集的CodeBase路径,可能为file URI格式 //{"Assembly.GetEntryAssembly().CodeBase",("入口程序集的CodeBase路径",Assembly.GetEntryAssembly()?.CodeBase) }, }; return pathDic; } } }