在 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 模拟器的路径问题。
我有这个代码:
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 模拟器的路径问题。