【问题标题】:How to save files to Documents folder on Hololens?如何将文件保存到 Hololens 上的 Documents 文件夹?
【发布时间】:2019-10-04 10:09:09
【问题描述】:

我想在 Hololens 上保存一些持久的 JSON 文件。他们需要在应用程序的构建中持续存在,因此Application.persistentDataPath 不起作用。我选择 Documents 是因为它最有意义。 Hololens 上没有下载文件夹。

这是我迄今为止尝试过的:

我已阅读App Capability Documentation 并手动将<uap:Capability Name="documentsLibrary"/> 添加到文件中的Package.appxmanifest

我还添加了xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" 命名空间。但我收到以下警告:

The element 'Capabilities' in namespace 'http://schemas.microsoft.com/appx/manifest/foundation/windows10' has invalid child element 'Capability' in namespace 'http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities'. List of possible elements expected: 'DeviceCapability' in namespace 'http://schemas.microsoft.com/appx/manifest/foundation/windows10'. Ad-Hoc Localz D:\Repositories\ad-hoc-localization\_build\Ad-Hoc Localz\Package.appxmanifest 37 

构建时出现以下错误:

Error APPX0501 Validation error. error C00CE014: App manifest validation error: The app manifest must be valid as per schema: Line 45, Column 6, Reason: Element '{http://schemas.microsoft.com/appx/manifest/uap/windows10}Capability' is unexpected according to content model of parent element '{http://schemas.microsoft.com/appx/manifest/foundation/windows10}Capabilities'. Expecting: {http://schemas.microsoft.com/appx/manifest/foundation/windows10}DeviceCapability. Ad-Hoc Localz D:\Repositories\ad-hoc-localization_build\build\bin\Win32\Master\AppxManifest.xml 1 

它还说我需要指定我使用的文件类型 this documentation 以手动将其添加到清单中。但我得到了同样的警告,即无效的子元素。我没有看到基于 GUI 的方式来添加像 image 中的 this forum

那么如何构建一个可以访问 Hololens 上 Documents 文件夹的应用程序呢?

在代码中我使用Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) 来获取文档的路径,但在代码sn-p 中它们显示它应该是KnownFolders.DocumentsLibraryEnvironment 在 UWP 上不是有效的命名空间吗?

Link to the whole manifest.

【问题讨论】:

  • 由于visual studio problem,其他人似乎遇到过类似的问题。
  • 可能值得更新视觉工作室。也可能是您需要 reorder your capabilities 以便在 uap 功能之后声明 rescap 功能。
  • 正如 chrisfromwork 所说,您可能需要更新 Visual Studio 的版本。我建议您使用最新的 Visual Studio 2019 构建您的应用程序。
  • @chrisfromwork 我已经在使用 2019 并且在 VS 安装程序中看不到任何进一步的更新。最后添加了 documentLibrary 功能,其他功能也是如此。在上面链接的文档中,它位于uap 命名空间而不是rescap;但在主要部分的开头,它说使用rescap....是的。无论如何,我都尝试过并得到完全相同的结果。
  • 如果我们能看到整个清单,我们或许可以提供更多帮助。如果可能,它可能值得分享。我尝试为 Visual Studio 2017 15.9.14 重新创建一个具有新的 recap 功能的清单,但无法解决这些问题。你知道你使用的是什么版本的 Visual Studio(你可以在 Help -> About Microsoft Visual Studio 下找到)。

标签: c# visual-studio unity3d uwp hololens


【解决方案1】:
  1. 不要使用

xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" 因为 DocumentLibrary 功能位于 uap 命名空间中。添加如下文档功能

<Capabilities>  
    <Capability Name="internetClientServer"/>
   <Capability Name="internetClient"/>
   <uap:Capability Name="documentsLibrary"/>
  <DeviceCapability Name="microphone"/>  
</Capabilities>

现在你应该不会收到警告了。

  1. 使用以下代码行在 Document 文件夹中创建和获取文件

     IReadOnlyList<Windows.Storage.StorageFile> 
     file=awaitKnownFolders.DocumentsLibrary.CreateFileAsync("FileName");
    
     IReadOnlyList<Windows.Storage.StorageFile> 
     file=awaitKnownFolders.DocumentsLibrary.GetFileAsync("filename")
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 2013-09-03
    • 1970-01-01
    相关资源
    最近更新 更多