首页 > 解决方案 > 如何获取调试文件夹的目录路径?

问题描述

我正在尝试获取我的应用程序正在执行的 Debug 文件夹的目录路径,或者我应该说我当前正在运行的 EXE 程序正在运行的目录路径。

现在,你们中的许多人可能会说要做这样的事情

System.Reflection.Assembly.GetExecutingAssembly().Location

我不能这样做。我需要从替代组件中获取。我不知道这将在哪个程序集中,所以我想它必须在不改变它的情况下在全球范围内工作,具体取决于它当前所在的程序集。

我正在寻找最好的方法(考虑到速度和性能)。

标签: c#.net

解决方案


System.AppContext.BaseDirectory

这是 .net core 中的首选替代品AppDomain.CurrentDomain.BaseDirectory(至少在 API 出现在 AppDomain 之前,如果有的话)。

AppDomain.CurrentDomain.BaseDirectory

这是全方位的最佳选择。它将为您提供类库的基本目录,包括 ASP.NET 应用程序中的类库。

Directory.GetCurrentDirectory()

这使用 kernel32.dll 中的 winapi GetCurrentDirectory 调用进行互操作调用,这意味着通常会返回启动进程的文件夹。此外,正如 MSDN 文档所说,它不能保证在移动设备上工作。

环境.当前目录

这只是调用Directory.GetCurrentDirectory()

装配位置

这将被称为使用

this.GetType().Assembly.Location

这将返回调用程序集的完整路径,包括程序集名称本身。如果您正在调用单独的类库,则将返回其基目录,例如“C:\myassembly.dll” - 显然取决于正在使用的程序集实例。

应用程序.启动路径

它位于 System.Windows.Forms 命名空间内,因此通常仅在窗口窗体应用程序中使用。

Application.ExecutablePath

与 Application.StartupPath 相同,但也包含应用程序名称,例如“myapp.exe”</p>

来源克里斯-s


推荐阅读