Path F#在不提供完整路径的情况下获取文件内容

Path F#在不提供完整路径的情况下获取文件内容,path,f#,Path,F#,我正在做一个小的F#程序,在这里我读取一个降价文件,并将其存储为字符串: open System.IO [<EntryPoint>] let main argv = let text = File.ReadAllText("/home/ask/RiderProjects/ConsoleApp1/ConsoleApp1/File.md") printfn "%s" text 0 什么都不管用。如何提供正确的路

我正在做一个小的F#程序,在这里我读取一个降价文件,并将其存储为字符串:

open System.IO
[<EntryPoint>]
let main argv =
    let text = File.ReadAllText("/home/ask/RiderProjects/ConsoleApp1/ConsoleApp1/File.md")
    printfn "%s" text
    
    0 
什么都不管用。如何提供正确的路径

我在运行ubuntu

编辑

我无意中写了“txt”作为上面一些示例的扩展名。这一点现在得到纠正

我正在使用的目录如下所示:

├── ConsoleApp1
│   ├── bin
│   ├── ConsoleApp1.fsproj
│   ├── File.md
│   ├── obj
│   └── Program.fs
└── ConsoleApp1.sln

Program.fs
是F#文件,其中包含我的代码
File.md
是我想要读取的文件

其中一个更有用的实用程序是
\uuuu SOURCE\u DIRECTORY\uuuuu
,这样您就可以参考与源文件目录相关的文件之类的内容。因此,只需一个简单的
路径。Join
即可获得该文件

let mdPath = Path.Join(__SOURCE_DIRECTORY__, "File.md")

什么是File.md?相对于什么?您是打算将File.txt与可执行文件一起放置,还是放置在与当前目录相关的位置?我不熟悉Linux,但在Windows上,这些是不同的东西,尽管大多数开发人员都不了解。我添加了一个编辑,应该可以清除上面的内容。这里有一个bin文件夹,您的可执行文件位于该文件夹下的某个位置,可能直接位于bin中,也可能位于bin中的某个文件夹中。我假设程序的当前文件夹与可执行文件的文件夹相同。这意味着您可能会使用“./file.md”或“../../file.md”甚至“../../file.md”作为路径来访问文件。问题可能仍然是像“./file.md”这样的路径是相对于当前目录的,而不是相对于可执行文件的。大多数开发人员都没有意识到这一点,因为通常这两者是同一条路径(至少在Windows中是这样)。然后在将来的某个时候它会失败,通常是当软件的用户试图以开发人员没有考虑到的某种方式启动它时。还有一个提示:如果您打算将File.md与可执行文件一起部署,那么您应该做两件事。首先,File.md应该是CopyToOutputDirectory,以便它(的一个副本)与可执行文件一起结束。(事实上,我应该在前面提到这一点,因为在任何情况下,您都可以只使用“File.md”)第二个问题是,您应该找到可执行文件目录的路径,并将其与文件名结合起来,而不是使用如我所示的相对路径。这样,无论当前目录是什么,程序都会找到该文件。
let mdPath = Path.Join(__SOURCE_DIRECTORY__, "File.md")