【问题标题】:How to get a file's content of UNO shared project as string如何将UNO共享项目的文件内容作为字符串获取
【发布时间】:2019-09-12 03:05:20
【问题描述】:

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

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

【问题讨论】:

    标签: c# webassembly uno-platform


    【解决方案1】:

    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}");
        }
    }
    

    【讨论】:

    • 差不多:你需要插入“!”在“string.IsNullOrEmpty”之前。 :-)
    猜你喜欢
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    • 2017-12-02
    • 2013-06-18
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 2014-07-26
    相关资源
    最近更新 更多