例えばFile.OpenRead(filePath)メソッドなどでファイルにアクセスするとき、filePathを相対パスで指定したとき、それはどこ基準なのでしょうか。
これは「アプリケーションの実行ファイルのパス」が基準になります。
一つコンソールアプリケーションを作成して確認してみます。
Visual StudioでコンソールアプリケーションをMyConsoleAppという名前で作成します。
そのままビルドを実行します。
そうすると、ターゲットフレームワークなどの多少の違いはあると思いますがMyConsoleApp/MyConsoleApp/bin/Debug/netcoreapp3.0フォルダの中にMyConsoleApp.exeというアプリケーションの実行ファイルが生成されます。
このMyConsoleApp.exeが相対パスの基準になります。
試してみましょう。
MyConsoleApp.exeと同じフォルダに一つフォルダ(MyFolder)を作成し、その中にファイル(MyFile.txt)を作成します。

MyFile.txtには「これはテストです!」と書いておきます。
それではこのファイルをコンソールアプリから読み込んでみます。
コンソールアプリのProgram.csファイルを以下のように編集します。
using System; using System.IO; namespace MyConsoleApp { class Program { static void Main(string[] args) { var text = File.ReadAllText("MyFolder/MyFile.txt"); Console.WriteLine(text); } } }
File.ReadAllTextメソッドには相対パスでファイルを指定しています。
これを実行すると、以下のようにファイルの中身が出力されます。
