c# - 如何获取调试文件夹的目录路径?
问题描述
我正在尝试获取我的应用程序正在执行的 Debug 文件夹的目录路径,或者我应该说我当前正在运行的 EXE 程序正在运行的目录路径。
现在,你们中的许多人可能会说要做这样的事情
System.Reflection.Assembly.GetExecutingAssembly().Location
我不能这样做。我需要从替代组件中获取。我不知道这将在哪个程序集中,所以我想它必须在不改变它的情况下在全球范围内工作,具体取决于它当前所在的程序集。
我正在寻找最好的方法(考虑到速度和性能)。
解决方案
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>
推荐阅读
- javascript - 添加动态按钮以显示弹出窗口以链接条目
- javascript - XMLHttpRequest() 在 Opera mini 中不起作用
- ckfinder - ckfinder ImagePreview vs Thubnail
- javascript - 搜索大量长文本时正则表达式不佳
- postgresql - Postgres:如何在 psql 查询中的字符串中插入双引号?
- r - 关于一个词的意见
- javascript - convert list of slugs into json in Javascript
- reactjs - Typescript + React useReducer 钩子错误:数据对象不可分配给“从不”类型的参数
- python - bash 脚本返回状态 -13
- c++ - 如何在使用递归函数时处理堆栈溢出