C# 跨平台can';找不到自定义文件夹路径

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

我正在使用C#和Xamarin跨平台。我创建了一个新文件夹“Images”,并添加了一些jpg文件。当我尝试“GetFiles”时,由于找不到文件夹路径而出现异常。 我也试着把文件夹放在项目核心上面,放的还是一样的

  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);
    }