在 C# 中获取可执行路径
本教程将介绍获取 C# 代码的可执行路径的方法。
使用 C# 中的 Assembly
类获取可执行路径
Assembly
类表示一个程序集,它是 C# 中通用语言运行时 CLR 应用程序的可重用构建块。Assembly.GetEntryAssembly()
函数用于获取当前执行代码的汇编。我们可以使用 Assembly.GetEntryAssembly().Location
属性获取当前正在执行的代码的路径,该属性以字符串变量的形式返回当前的可执行路径。请参见以下代码示例。
using System;
using System.IO;
using System.Reflection;
namespace executable_path
{
class Program
{
static void Main(string[] args)
{
string execPath = Assembly.GetEntryAssembly().Location;
Console.WriteLine(execPath);
}
}
}
输出:
C:\Debug\destroy object.exe
在上面的代码中,我们使用 C# 中的 Assembly
类显示了当前代码的可执行路径。我们将 Assembly.GetEntryAssembly().Location
属性返回的值存储在字符串变量 execPath
内,并显示给用户。
使用 C# 中的 AppDomain
类获取可执行路径
上面的方法为我们提供了路径以及可执行文件的名称。如果要获取没有可执行文件名称的目录名称,则可以使用 C# 中的 AppDomain
类。AppDomain
类表示一个应用程序域。应用程序域是在其中执行应用程序的隔离环境。AppDomain.CurrentDomain
属性获取当前应用程序的应用程序域。我们可以使用 AppDomain.CurrentDomain.BaseDirectory
属性获取可执行文件路径,该属性返回目录路径,该路径包含当前代码文件的可执行文件(字符串变量)。以下代码示例向我们展示了如何使用 C# 中的 AppDomain
类获取当前代码的可执行路径。
using System;
using System.IO;
using System.Reflection;
namespace executable_path
{
class Program
{
static void Main(string[] args)
{
string execPath = AppDomain.CurrentDomain.BaseDirectory;
Console.WriteLine(execPath);
}
}
}
输出:
C:\Debug\
在上面的代码中,我们使用 C# 中的 AppDomain
类显示了当前代码的可执行路径。我们将 AppDomain.CurrentDomain.BaseDirectory
属性返回的值存储在字符串变量 execPath
内,并将其显示给用户。建议使用此方法,因为与其他两种方法相比,它最简单且所需的代码更少。
使用 C# 中的 Path
类获取可执行路径
Path
类对包含 C# 中文件路径的字符串执行各种操作。Path.GetDirectoryName()
函数可以获取路径指定的目录信息。我们可以将 System.Reflection.Assembly.GetExecutingAssembly().CodeBase
属性用作 Path.GetDirectoryName()
函数的参数,以获取包含当前代码的目录的名称。请参见以下代码示例。
using System;
using System.IO;
using System.Reflection;
namespace executable_path
{
class Program
{
static void Main(string[] args)
{
string execPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase);
Console.WriteLine(execPath);
}
}
}
输出:
file:\C:\Users\Maisam\source\repos\executable path\executable path\bin\Debug
在上面的代码中,我们使用 C# 中的 Path
类显示了当前代码的可执行路径。我们将 Path.GetDirectoryName()
函数返回的值存储在字符串变量 execPath
内,并显示给用户。此方法以路径开头的字符串 file:\
返回路径。不建议使用此方法,因为与前两种方法相比,它需要更多的代码。
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn