在VS for MAC上使用File.Open如何为绝对路径提供字符串?

时间:2018-03-18 15:26:57

标签: c# visual-studio-mac

将代码从VS for Windows移植到VS for MAC。一个函数的一部分使用File.Open(System.IO)打开一个文件,该文件的字符串至少在Windows上提供要打开的绝对路径和文件。相同的代码(在VS for MAC上似乎支持字符串以包含当前项目目录二进制文件的路径。

这里举一个例子就是我喜欢'要做:

File.Open("~/Projects/TestProg/UseThisFile.txt", FileMode.Open)

但是,发生的是IO异常,表示以下内容:

  

System.IO.FileNotFoundException无法找到文件   " /Users//Projects/TestProg/bin/Debug/TestProg.app/Contents/Resources/~/Projects/TestProg/UseThisFile.txt"

只是想知道我错过了什么和/或我是否应该使用File.Open而不是NSFileManager(如果我不必要,则不必重新编写一堆代码)?

2 个答案:

答案 0 :(得分:0)

请使用:

Environment.ContentRootPath

它独立于您的平台(Windows,Linux,MacOS)

例如:

File.Open($"{Environment.ContentRootPath}/UseThisFile.txt", FileMode.Open)

答案 1 :(得分:0)

Environment.ContentRootPathXamarin.Mac现代应用中无法使用。

您可以使用 Environment.CurrentDirectory

实施例

var appContentResources = Environment.CurrentDirectory;    
Console.WriteLine(appContentResources);

输出:

/~~~/~~~/xamarin_mac.app/Contents/Resources