C# 跨平台can';找不到自定义文件夹路径
我正在使用C#和Xamarin跨平台。我创建了一个新文件夹“Images”,并添加了一些jpg文件。当我尝试“GetFiles”时,由于找不到文件夹路径而出现异常。 我也试着把文件夹放在项目核心上面,放的还是一样的C# 跨平台can';找不到自定义文件夹路径,c#,android,xamarin.forms,directory,C#,Android,Xamarin.forms,Directory,我正在使用C#和Xamarin跨平台。我创建了一个新文件夹“Images”,并添加了一些jpg文件。当我尝试“GetFiles”时,由于找不到文件夹路径而出现异常。 我也试着把文件夹放在项目核心上面,放的还是一样的 string directory = @"~/Images/"; List<Image> HandCards = new List<Image>(); foreach (string myFile in D
string directory = @"~/Images/";
List<Image> HandCards = new List<Image>();
foreach (string myFile in Directory.GetFiles(directory, "*.jpg", SearchOption.AllDirectories))
{
Image image = new Image();
image.Source = FileImageSource.FromFile( myFile);
HandCards.Add(image);
}
stringdirectory=@“~/Images/”;
列表名片=新列表();
foreach(Directory.GetFiles(Directory,*.jpg,SearchOption.AllDirectories)中的字符串myFile)
{
图像=新图像();
image.Source=FileImageSource.FromFile(myFile);
名片。添加(图像);
}
更新1
Nick Kovalsky回答后,我移动了文件夹,但仍然出现相同的错误
查看您的代码,您正在从共享代码解析共享库资源,同时在本机android库中拥有图像。 最好将em移动到共享库: 编辑: 要在启动时生成所有映像的列表,请执行以下操作:
var assembly = typeof(App).GetTypeInfo().Assembly;
var ImagesFiles = new List<string>();
foreach (var res in assembly.GetManifestResourceNames())
{
if (res.Contains(".jpg"))
{
ImagesFiles.Add(res);
}
}
然后,您可以按名称加载图像:
public static ImageSource ImageFromResources(string subfolder, string filename)
{
var generatedFilename = AssemblyName + $".Images.{subfolder}.{filename}";
return ImageSource.FromResource(generatedFilename);
}
您正在评估您运行的操作系统如何处理路径。在paritculary中,目录分隔符是什么,使用了哪些通配符,等等。我现在甚至不知道代码中的“~”应该代表什么。path类的全部内容是以操作系统无关的方式格式化路径。web应用程序和windows窗体中的“~”表示应用程序的根文件夹。~表示HTML和HTML格式的“当前路径”。它不属于C端路径。@Christopher
在HTML
中?
public static ImageSource ImageFromResources(string subfolder, string filename)
{
var generatedFilename = AssemblyName + $".Images.{subfolder}.{filename}";
return ImageSource.FromResource(generatedFilename);
}