VS2017 中资产文件设置为"生成内容 - 复制始终"的 UWP 应用不会复制到 LocalSta



使用Visual Studio 2017 构建 UWP 应用程序时,我使用"内容"的生成操作标记并为"复制到输出目录"属性设置"始终复制"的任何资产文件都将复制到相应的项目 \Bin ..\调试项目文件夹。

但是这些文件不会复制到运行时 Local\Packages .. \LocalState 文件夹中,因此如果我尝试从 ApplicationData.Current.LocalFolder 读取它们,则应用程序无法使用这些文件。

这是Visual Studio中的错误还是我的开发环境中的错误?还是这是设计使然? 如果是设计使然,建议使用应用分发包含资产或数据文件的文件夹(可在运行时枚举(的方法是什么?

过去,我使用

StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new System.Uri("ms-appx:///assets/xxx.png")); 

需要访问一两个特定文件时的语法,但我正在寻找一种方法来部署可能包含 1 对多文件的文件文件夹,具体取决于构建的目的,并且不必为每个文件将一长串文件 URI 硬编码到应用程序中,然后在更改文件以进行特殊构建时对其进行更改。

">

Copy Always 不会复制到 LocalState 文件夹。

也许您误解了有关"复制到输出目录"的功能,它不会输出到本地文件夹。

如果要将文件复制到本地文件夹,则需要手动复制。关于如何手动复制,设置了"始终复制"的文件将在安装目录中生成,您可以转到相应的文件夹查找文件并使用CopyAsync()方法复制到本地文件夹。

经过进一步挖掘,我找到了我想要的东西。

从 API 的角度来看,"复制到输出目录"放置文件的位置似乎被视为包的安装位置。因此,无需尝试枚举 LocalState 文件夹或其子文件夹的文件,而是需要检索 InstalledLocation 文件夹并枚举它,以便访问随应用程序分发的资产文件。

例如:

StorageFolder installedFolder =  Windows.ApplicationModel.Package.Current.InstalledLocation;
StorageFolder assetsFolder = await installedFolder.GetFolderAsync("assets");
IReadOnlyList<StorageFile> pictures = await assetsFolder.GetFilesAsync();

将是访问资产文件夹或资产的任何其他子文件夹的方式,或者如果您相应地调整 GetFolderAsync 参数,则访问项目的根目录。

相关内容

  • 没有找到相关文章

最新更新