-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Description
Background and Motivation
The path of the current application is often needed to load files in your application directory. For example, appSettings.json configuration files, or image files.
This API is needed more than before now that we support single-file publishing and assemblies do not have physical file paths anymore. See https://github.com/dotnet/designs/blob/master/accepted/2020/form-factors.md#single-file for details.
We have AppContext.BaseDirectory, but that API is documented as:
Gets the pathname of the base directory that the assembly resolver uses to probe for assemblies.
There are scenarios where AppContext.BaseDirectory doesn't return the directory where the application lives, see #40828 (comment) for example - PublishSingleFile in 3.0. Since AppContext.BaseDirectory is defined this way, it makes it unusable for the above purposes.
Proposed API
namespace System
{
public partial class Environment
{
// Returns the directory path of the application.
public string? ApplicationDirectory { get; }
}
}Usage Examples
string configurationFile = Path.Combine(Environment.ApplicationDirectory, "appSettings.json");