将代码从 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/Content/Resources/~/Projects/TestProg/UseThisFile.txt">
只是想知道我错过了什么和/或我是否应该为此使用 File.Open,而不是 NSFileManager(如果我不必,则不必重定一堆代码(?
请使用:
Environment.ContentRootPath
它独立于您的平台(Windows,Linux,MacOS(工作
例如:
File.Open($"{Environment.ContentRootPath}/UseThisFile.txt", FileMode.Open)
Environment.ContentRootPath
在Xamarin.Mac
新式应用中不可用。
您可以使用Environment.CurrentDirectory
例:
var appContentResources = Environment.CurrentDirectory;
Console.WriteLine(appContentResources);
输出:
/~~~/~~~/xamarin_mac.app/Contents/Resources