Как получить содержимое файла общего проекта UNO в виде строки - PullRequest
1 голос
/ 23 апреля 2019

В обычном C # / UWP можно без каких-либо (больших) проблем прочитать содержимое файла (или ресурса) в строковую переменную. Как это сделать с целью сборки WebAssembly платформы UNO?

Что я уже пробовал: Согласно консоли отладки браузера, выполнение моего кода прекращается (без каких-либо исключений), как только я пытаюсь использовать отражение, например. Прежде чем копаться глубже в джунглях JavaScript, я решил спросить здесь специалистов. (В качестве последнего обходного пути я подумал об использовании реализации HTTP-клиента, но я сделаю это только в том случае, если на самом деле альтернативы нет.)

1 Ответ

3 голосов
/ 23 апреля 2019

Цель WebAssembly для Uno пока не поддерживает чтение файлов содержимого как часть API System.IO.File (и, вероятно, не будет в ближайшем будущем из-за его синхронного API).

Самый простой способ, который работает на разных платформах, это использовать встроенные ресурсы:

<ItemGroup>
  <EmbeddedResource Include="myfile.txt" />
</ItemGroup>

Затем в коде используйте что-то вроде этого:

static string ReadResource(string fileName)
{
    var assembly = typeof(Program).Assembly;
    var resourceName = assembly.GetManifestResourceNames()
        .FirstOrDefault(f => f.Contains(fileName));

    if (!string.IsNullOrEmpty(resourceName))
    {
        using (var s = new StreamReader(assembly .GetManifestResourceStream(resourceName)))
        {
            return s.ReadToEnd();
        }
    }
    else
    {
        throw new InvalidOperationException(
            $"Unable to find resource {fileName} in {typeof(Program).Assembly}");
    }
}
...