代码之家  ›  专栏  ›  技术社区  ›  Diego

net core 2.0读取文件添加为资源

  •  6
  • Diego  · 技术社区  · 7 年前

    我正在做一个C#Net Core 2.0应用程序。。。

    我有一个 .sln 有几个名为PrjA、PrjB、PrjC的控制台项目,它们将在不同的端口、端口5000、端口5010和端口5020中运行。它们通过控制台并行运行

    C:>dotnet PrjA.dll
    C:>dotnet PrjB.dll
    C:>dotnet PrjC.dll
    

    我还有一个图书馆项目叫做 PrjCommon 这三个项目都引用了它。在这个项目中,我希望所有三个项目都有一个共同的配置文件。

    此文件是 json 调用的文件 portsettings.json .

    当我在 Debug 模式或生成 Publish folder , 端口设置。json 文件未保存。

    在里面 PrjCommon公司 我试图盗用的项目 端口设置。json 作为中的文件 Resources.resx .

    从这三个项目中的任何一个,我在PRJComon中调用了一个方法,该方法应为 端口设置。json 文件

    我试图从参考资料中读取此文件。resx有两种方式。

    首先像这样

    var assembly = Assembly.GetEntryAssembly();
     string[] names = assembly.GetManifestResourceNames();
    

    但是 names 为空。

    第二个

    var byteArray = Resources.portsettings;
    

    返回字节数组,但我无法将这些字节数组转换为json。

    我的问题是,我如何才能让它发挥作用。要么在编译这些项目时保存json文件,要么将其保存为资源文件并能够读取。

    谢谢

    2 回复  |  直到 7 年前
        1
  •  6
  •   Greg    7 年前

    您可以通过以下内容阅读嵌入式资源。

    public static class EmbeddedResource
    {
        public static string[] GetApiRequestFile(string namespaceAndFileName)
        {
            try
            {
                using (var stream = typeof(EmbeddedResource).GetTypeInfo().Assembly.GetManifestResourceStream(namespaceAndFileName))
                using (var reader = new StreamReader(stream, Encoding.UTF8))
                    return reader.ReadToEnd().Split(';');
            }
    
            catch(Exception exception)
            {
                ApplicationProvider.WriteToLog<EmbeddedResource>().Error(exception.Message);
                throw new Exception($"Failed to read Embedded Resource {namespaceAndFileName}");
            }
        }
    }
    

    所以,在我的例子中,我想读取包含我格式化的URL的嵌入式文本文件,它们主要充当模板。但你所寻求的逻辑将是第一条流线。

    Solution - Opti
    Folder   - Resource
    File     - RequestUrl.txt
    

    如果我有一个文本文件所在的类,那么具有指定文件的命名空间将是 Opti.Resource.RequestUrl.txt .

    Folder Structure

    Calling the embedded resource

        2
  •  1
  •   Diego    7 年前

    我解决了储蓄问题 json 文件位于 Debug Publish 设置的目录。json文件属性 Copy to Output Directory Always 正如所说 here .

    我还添加了以下资源文件 this 辅导的

    我不知道这是不是最好的方法,但这是最简单的。