进入我的项目根目录中的文件夹 - ASP.NET Core 3.1

Get to a Folder in the Root of my Project - ASP.NET Core 3.1

我有一个名为 TestLogging 的根文件夹,其中包含一个解决方案。我有一个控制台应用程序,它有自己的目录,还有一个测试项目也有它自己的目录。

在 Windows 资源管理器中,我在根文件夹 TestLogging 中手动创建了一个名为 Configuration 的目录,其中有一个名为 Configuration.config.[=18= 的 xml 文件]

我正在尝试通过代码到达此路径以引用此文件,而不必使用此文件的绝对路径。

我已经使用 System.IO 尝试了此处示例的变体,它们都指向正在 运行 的当前项目的构建目录,例如MyConsoleApp\bin\Debug\netcoreapp3.1

以下是我尝试过的一些方法:

string defaultPath = System.IO.Directory.GetCurrentDirectory();

// this does the same as above!
string pathToConsoleApp = Path.GetFullPath(AppContext.BaseDirectory);

// very similar to the other two!
var projectPath = Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)));

如果已重复,请提前应用。

解决方案

string configpPath = Path.Combine(Directory.GetParent(System.IO.Directory.GetCurrentDirectory()).Parent.Parent.FullName, "Configuration.config.xml");

测试代码

class Program
{
    static void Main(string[] args)
    {
        string defaultPath = System.IO.Directory.GetCurrentDirectory();

        // this does the same as above!
        string pathToConsoleApp = Path.GetFullPath(AppContext.BaseDirectory);

        // very similar to the other two!
        var projectPath = Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)));

        string configpPath = Path.Combine(Directory.GetParent(System.IO.Directory.GetCurrentDirectory()).Parent.Parent.FullName, "Configuration.config.xml");


        Console.WriteLine("Hello World!");
        Console.WriteLine("defaultPath:   " + defaultPath);
        Console.WriteLine("pathToConsoleApp:   " + pathToConsoleApp);
        Console.WriteLine("projectPath:   " + projectPath);
        Console.WriteLine("configpPath:   " + configpPath);
    }
}

测试结果