A lot of Windows based applications generally require one or more files that are consumed by the application to be placed in the same folder hierarchy as the application. For example, if I need a couple of XML files, I generally create a folder called XMLData and place the files inside it.
Although accessing these file paths in code is pretty straightforward, there is a small caveat to it. A lot of users use the System.Environment.CurrentDirectory
This works well in most situations. Note how the tooltip states - "the directory from which this process starts".
However, if your application contains any piece of code that can alter the current working directory - say, you use a OpenFileDialog control to pick a file on the file system but do not restore the working directory by setting the RestoreDirectory property, this results in changing the current working directory and the quoted portion of the tooltip no longer holds good.
I would recommend using the Application.StartupPath instead of the System.Environment.CurrentDirectory. The folder path returned by this function is not altered during the course of execution of the application.
Console applications do not have access to the Application object and hence you might need to use the System.Reflection.Assembly.GetExecutingAssembly.Location method to get the full path of the console application. You can then use the IO.Path.GetDirectoryName method to extract the application launch directory.
Monday, December 17, 2007
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment