在 Xamarin Forms 应用程序中构建路径 iOS v MacOs 时出现问题

Problem with building paths iOS v MacOs in Xamarin Forms app

我有这个代码:

var myDocuments = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "..", "Shared");
_rootPath = Path.Combine(myDocuments, "VisitsRota.MacOS");
_stylesPath = Path.Combine(_rootPath, "Styles");
_vrrDataFile = Path.Combine(_rootPath, "VisitsRotaData.xml");

// Read in the required data
vrrData = DeserializeFromXml<VisitsRotaData>(_vrrDataFile);

// Build list of month names. Should this property also have a private counterpart?
ListMonths = DateTimeFormatInfo.CurrentInfo.MonthNames.TakeWhile(m => m != String.Empty).ToList();

// Select the current month in the list
ListMonthsSelectedItem = DateTime.Now.ToString("MMMM");

string[] stylesArray = Directory.GetFiles(_stylesPath, "ElderlyInfirm-Schedule-*.xsl")
                          .Select(file => Path.GetFileName(file)).ToArray<string>();

在 Mac 上它按预期运行。但是在 iOS 模拟器(我刚开始使用)上它引发了一个异常:

System.IO.DirectoryNotFoundException: Could not find a part of the path '/Users/xxxxxxx/Library/Developer/CoreSimulator/Devices/B812608B-8131-4386-B189-C646684A8965/data/Containers/Data/Application/EF23B73D-8D38-4F41-995E-FCAE13AE3035/Shared/VisitsRota.MacOS/Styles'.

我应该如何在我的 iOS 构建上复制测试?如果我使用文字路径而不是 Path.Combine 等。我没有问题。

我能够解决这个问题。我的相关 有关资源的帮助。

在这个问题的评论中有人问我:

How are these files being deployed with your app?

这是关键!

我向 AppDelegate 添加了一个构造函数 class:

[Register("AppDelegate")]
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
    public AppDelegate()
    {
        InstallApplicationFiles();
    }

链接的问答有更多信息。通过让应用程序从资源中复制默认文件,解决了 iOS 模拟器的路径问题。