如何以字符串形式获取UNO共享项目的文件内容

时间:2019-04-23 00:06:19

标签: c# webassembly uno-platform

在常规C#/ UWP中,可以将任何文件(或资源)的内容读取到字符串变量中而没有任何(更大)问题。如何使用UNO平台的WebAssembly构建目标?

我已经尝试的方法:例如,根据浏览器的调试控制台,一旦尝试使用反射,我的代码执行就会停止(不引发任何异常)。在深入研究JavaScript丛林之前,我决定在这里咨询专家。 (作为最后的解决方法,我考虑过使用HTTP客户端实现,但是只有在确实没有可用的替代方法时,我才会这样做。)

1 个答案:

答案 0 :(得分:3)

Uno的WebAssembly目标暂时不支持作为System.IO.File API的一部分读取内容文件(并且由于其同步的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}");
    }
}