本文概述
通常, 应用程序应该能够使用相对路径定位其他资源, 而无需用户手动选择一些文件即可正常工作。但是, 在某些情况下, 第三方库需要绝对路径才能正常工作, 因此你需要满足此要求。显然, 我们在谈论内部功能, 因此用户对此一无所知, 因此你可以从应用程序中当前拥有的目录开始构建路径。
在这篇简短的文章中, 我们将与你分享一个简单的代码片段, 以了解基于C#控制台的应用程序的可执行文件的当前路径。
A.带有可执行文件的绝对路径
如果你愿意检索可执行文件的绝对路径(包括路径的.exe), 则可能要使用System.Reflection命名空间中的Assembly类。 System.Reflection命名空间包含一些类型, 这些类型通过检查托管程序代码中的程序集, 模块, 成员, 参数和其他实体的元数据来检索其信息。这些类型还可以用于操纵已加载类型的实例, 例如, 挂钩事件或调用方法。 Assembly类本身表示一个程序集(:v), 它是公共语言运行时应用程序的可重用, 可版本控制和自描述的构造块。
你可以使用以下指令检索可执行文件的绝对路径:
using System;
using System.Reflection;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
// Retrieve the absolute path of the current executable.
string path = Assembly.GetEntryAssembly().Location;
// Prints something like:
// C:\Users\sdkca\ConsoleApp1\ConsoleApp1\bin\Debug\ConsoleApp1.exe
Console.WriteLine(path);
// Pause application to read the output in the console
Console.ReadLine();
}
}
}
B.没有可执行文件的绝对路径
如果要检索可执行文件的基本目录, 则不需要使用Reflection名称空间, 而只需从应用程序域访问当前线程的BaseDirectory即可:
using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
// Retrieve the absolute path of the current executable.
string path = AppDomain.CurrentDomain.BaseDirectory;
// Prints something like:
// C:\Users\sdkca\ConsoleApp1\ConsoleApp1\bin\Debug\
Console.WriteLine(path);
// Pause application to read the output in the console
Console.ReadLine();
}
}
}
编码愉快!
评论前必须登录!
注册