将代码从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(如果我不必要,则不必重新编写一堆代码)?
答案 0 :(得分:0)
请使用:
Environment.ContentRootPath
它独立于您的平台(Windows,Linux,MacOS)
例如:
File.Open($"{Environment.ContentRootPath}/UseThisFile.txt", FileMode.Open)
答案 1 :(得分:0)
Environment.ContentRootPath
在Xamarin.Mac
现代应用中无法使用。
您可以使用 Environment.CurrentDirectory
var appContentResources = Environment.CurrentDirectory;
Console.WriteLine(appContentResources);
/~~~/~~~/xamarin_mac.app/Contents/Resources