Не удается получить доступ к файлу на OneDrive; HoloLens Runtime - PullRequest
1 голос
/ 15 апреля 2020

Я начал работать с Microsoft HoloLens.

Я совершенно новичок в C# программировании. Так что это может быть простой или даже глупый вопрос, но я просто не могу это объяснить и не смог найти никакой информации об этом. Я работаю с Unity 2018.4.21f1 Visual Studio 2019 и уже упомянутым HoloLens.

Желаемое поведение:

Я хотел бы запрограммировать приложение, которое открывает FileExplorer, где я могу выбрать OneDrive из выпадающего меню, выбрать .obj-файл (давайте возьмем cube.obj как пример), и этот файл обрабатывается и обрабатывается во время выполнения.

Текущее поведение:

Я могу использовать FileOpenPicker для выбора файла в OneDrive, но затем появляется следующее сообщение об ошибке:

Исключение, сгенерированное в 0x76C330D2 в APP.exe: Microsoft C ++ исключение: Il2CppExceptionWrapper в ячейке памяти 0x0210C090. DirectoryNotFoundException: не удалось найти часть пути "C: \ Data \ Users \ marcu \ AppData \ Local \ Packages \ microsoft.microsoftskydrive_8wekyb3d8bbwe \ LocalState \ OpenFile \ cube.obj".

Примечания:

  • Все отлично работает, если cube.obj хранится локально на HoloLens. Так что это может быть связано с облачным хранилищем, но я могу распечатать путь.
  • Работает и с Unity Editor.
  • Путь не длиннее 260 знаков.
  • В пути нет пробелов.
  • Возможно, мне просто не хватает соответствующего синтаксиса поиска, чтобы найти ответ.
  • К сожалению, поиск кода ошибки не помог.
  • Я также могу добавить фрагмент кода, но в принципе он очень похож на первый пример отсюда . Единственное отличие состоит в том, что я сохраняю путь с файлом file.Path в строке.

Если у кого-то возникла подобная проблема и она могла бы помочь мне решить ее или могла бы дать подсказку, я бы очень благодарен.

1 Ответ

0 голосов
/ 20 апреля 2020

Приложения UWP по умолчанию имеют доступ только к определенным местоположениям файловой системы, таким как ApplicationData и Package.InstalledLocation. К сожалению, вы не можете напрямую получить доступ к файлам в OneDrive по пути.

Но вы можете скопировать этот файл из OneDrive в ApplicationData.Current.LocalFolder, вызвав метод StorageFile.CopyAsync(). Поскольку LocalFolder - это папка, в которой ваше приложение может свободно хранить данные и создаваться при его установке, вы можете получить доступ к этому файлу из LocalFolder по строковому пути.

...