个性化阅读
专注于IT技术分析

如何在C#中检索控制台应用程序的可执行路径

本文概述

通常, 应用程序应该能够使用相对路径定位其他资源, 而无需用户手动选择一些文件即可正常工作。但是, 在某些情况下, 第三方库需要绝对路径才能正常工作, 因此你需要满足此要求。显然, 我们在谈论内部功能, 因此用户对此一无所知, 因此你可以从应用程序中当前拥有的目录开始构建路径。

在这篇简短的文章中, 我们将与你分享一个简单的代码片段, 以了解基于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();
        }
    }
}

编码愉快!

赞(0)
未经允许不得转载:srcmini » 如何在C#中检索控制台应用程序的可执行路径

评论 抢沙发

评论前必须登录!