我遇到了很多方法来提取C#中的当前目录。
我正在尝试获取我正在编写的Windows窗体应用程序的目录。我的应用程序往往被其他进程调用,因此 Environment.CurrentDirectory 对我来说不起作用。
在快速搜索和进行一些测试之后, AppDomain.CurrentDomain.BaseDirectory 和 Application.StartupPath 似乎是最好的方法,并在我的最终工作正常。
我需要知道哪一个更好用,以及当我使用另一个时可能出现的任何问题。
答案 0 :(得分:2)
翻转硬币,在性能良好的Winforms应用程序中它们总是相同的。从技术上讲,它可以搞砸,.config文件可以更改.BaseDirectory。不是StartupPath的问题,无论配置如何,都保证始终返回EXE文件的路径,它使用了winapi功能。
因此,如果文件位置与EXE文件相对,就像通常那样,那么StartupPath就是#34;最好的"。请记住,您只能期望能够从这样的文件中读取。在调试时,写入工作正常但在部署之后不能正常工作。程序不具有对C:\ Program Files的写入权限。在这种情况下使用AppData很重要,请使用Environment.GetFolderPath()。如果数据很珍贵且需要备份,则为文件共享。