在 C# 中,有多种方法可以获取当前应用程序的目录。以下是一些常用的方法:
1. 使用 AppDomain.CurrentDomain.BaseDirectory
AppDomain.CurrentDomain.BaseDirectory
返回当前应用程序域的基本目录。
Csharp
深色版本
using System;
class Program
{
static void Main()
{
string appDirectory = AppDomain.CurrentDomain.BaseDirectory;
Console.WriteLine("Application Directory: " + appDirectory);
}
}
2. 使用 System.IO.Directory.GetCurrentDirectory()
Directory.GetCurrentDirectory()
返回当前工作目录,这通常是应用程序的启动目录。
Csharp
深色版本
using System;
using System.IO;
class Program
{
static void Main()
{
string currentDirectory = Directory.GetCurrentDirectory();
Console.WriteLine("Current Directory: " + currentDirectory);
}
}
3. 使用 System.Reflection.Assembly.GetExecutingAssembly().Location
Assembly.GetExecutingAssembly().Location
返回当前执行程序集的位置(文件路径)。
Csharp
深色版本
using System;
using System.IO;
using System.Reflection;
class Program
{
static void Main()
{
string assemblyPath = Assembly.GetExecutingAssembly().Location;
string appDirectory = Path.GetDirectoryName(assemblyPath);
Console.WriteLine("Application Directory: " + appDirectory);
}
}
4. 使用 System.AppContext.BaseDirectory
AppContext.BaseDirectory
返回当前应用程序的基础目录。这个属性在 .NET Core 和 .NET 5+ 中可用。
Csharp
深色版本
using System;
class Program
{
static void Main()
{
string appDirectory = AppContext.BaseDirectory;
Console.WriteLine("Application Directory: " + appDirectory);
}
}
5. 使用 Environment.CurrentDirectory
Environment.CurrentDirectory
获取或设置当前工作目录。
Csharp
深色版本
using System;
class Program
{
static void Main()
{
string currentDirectory = Environment.CurrentDirectory;
Console.WriteLine("Current Directory: " + currentDirectory);
}
}
6. 使用 System.Windows.Forms.Application.StartupPath
如果你在 Windows Forms 应用程序中,可以使用 Application.StartupPath
来获取应用程序的启动目录。
Csharp
深色版本
using System;
using System.Windows.Forms;
class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
string startupPath = Application.StartupPath;
Console.WriteLine("Startup Path: " + startupPath);
// 运行你的 Windows Forms 应用程序
Application.Run(new Form1());
}
}
总结
AppDomain.CurrentDomain.BaseDirectory
:适用于大多数情况,返回应用程序域的基本目录。Directory.GetCurrentDirectory()
:返回当前工作目录,可能与应用程序目录不同。Assembly.GetExecutingAssembly().Location
:返回当前执行程序集的位置,适合需要具体文件路径的情况。AppContext.BaseDirectory
:适用于 .NET Core 和 .NET 5+,返回应用程序的基础目录。Environment.CurrentDirectory
:获取或设置当前工作目录。Application.StartupPath
:适用于 Windows Forms 应用程序,返回应用程序的启动目录。
选择哪种方法取决于你的具体需求和应用场景。对于大多数情况,AppDomain.CurrentDomain.BaseDirectory
是一个通用且可靠的选择。