【问题标题】:Is it ok to use Directory.GetCurrentDirectory() in uwp?在 uwp 中使用 Directory.GetCurrentDirectory() 可以吗?
【发布时间】:2020-08-25 03:59:47
【问题描述】:

我已使用“Directory.GetCurrentDirectory()”来查找 exe 路径,以查找存储在共享类库项目中的一些图像文件夹。我能够在我的电脑上成功运行这个项目,同时在 Visual Studio 中进行测试。

'Directory.GetCurrentDirectory()' 获取 exe 路径,我使用此路径获取共享图像文件夹路径。一切正常。但是在我创建要上传到商店的包后,应用程序崩溃,WACK 失败并出现各种错误,其中很少有“平台版本启动”、“应用程序启动”、“ 崩溃和挂起等。

我怀疑,'Directory.GetCurrentDirectory()' 方法/api 是否有问题。 但是微软已经将其作为 uwp 的一部分进行了记录,如此处所述。 https://docs.microsoft.com/en-us/dotnet/api/system.io.directory.getcurrentdirectory?view=netcore-3.1

我哪里做错了?任何帮助是极大的赞赏。我无法前进。

额外信息:如果我启动“Directory.GetCurrentDirectory()”文件夹,则会启动以下文件夹。

【问题讨论】:

  • 您好,在 UWP 中,StorageFolder 通常用于代替 Directory。虽然Directory.GetCurrentDirectory()可以在UWP中使用,但它返回的是文件夹的路径。如果要通过路径访问文件或文件夹,这是 UWP 中的受限行为。您提到您无法通过 WACK 检查。获取文件夹路径后你做了什么?您可以描述您的目的,也许还有其他解决方案。
  • 是的,如果是StorageFolder,它不会有任何问题。我在这里所做的是,我在“SharedLibrary”共享类库项目中有一些图像文件夹。当用户浏览应用程序时,我将这些图像显示给用户。我知道,这些文件夹可以复制到应用程序的本地文件夹中,然后显示它们。但我想知道这个 Directory.GetCurrentDirectory() 方法,因为它在测试期间有效。

标签: uwp


【解决方案1】:

如果我们想展示类库中的静态图片资源,我们不需要将图片复制到应用文件夹,也不需要通过路径获取图片。 UWP 提供了一个相对简单的解决方案。

我们可以把图片放到类库的Assets文件夹中(比如SharedLibrary/Assets/test.png),把Build Action设置为ContentCopy to the output directory设置为错误

确保主工程引用这个类库后,可以通过ms-appx的uri方案获取图片:

Xaml

<Image Source="ms-appx:///SharedLibrary/Assets/test.png"/>

C#

var bitmap = new BitmapImage(new Uri("ms-appx:///SharedLibrary/Assets/test.png"));
MyImage.Source = bitmap;

获取图片文件

var imgFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///SharedLibrary/Assets/test.png"));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-18
    • 2019-11-09
    • 2016-11-05
    • 2017-10-18
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    相关资源
    最近更新 更多