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

Die*_*ego 4 c# resources json .net-core

我正在做C#Net Core 2.0应用程序...

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

C:>dotnet PrjA.dll
C:>dotnet PrjB.dll
C:>dotnet PrjC.dll
Run Code Online (Sandbox Code Playgroud)

我还有另一个图书馆项目PrjCommon,这三个项目都引用了它。在此项目中,我希望所有三个项目都具有一个配置文件。

该文件是一个json名为的文件portsettings.json

当我在Debug模式下运行任何这些项目或生成时Publish folderportsettings.json不会保存文件。

PrjCommonProject中,我尝试将其portsettings.json作为文件嵌入Resources.resx

从这三个项目中的任何一个,我在PrjCommon中调用了一个应该读取portsettings.json文件的方法。

我试图以两种方式从Resources.resx读取此文件。

首先像这样

var assembly = Assembly.GetEntryAssembly();
 string[] names = assembly.GetManifestResourceNames();
Run Code Online (Sandbox Code Playgroud)

names为空。

第二

var byteArray = Resources.portsettings;
Run Code Online (Sandbox Code Playgroud)

那返回一个字节数组,但是我不能将那些字节数组转换成json。

我的问题是如何使它正常工作。在我编译这些项目时保存json文件,或者将其保存为资源文件并能够读取它。

谢谢

Gre*_*reg 5

您可以使用以下内容阅读嵌入式资源。

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}");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,就我而言,我想读取包含我格式化的URL的嵌入式文本文件,它们主要充当模板。但是,您要寻找的逻辑是第一条线。

Solution - Opti
Folder   - Resource
File     - RequestUrl.txt
Run Code Online (Sandbox Code Playgroud)

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

资料夹结构

调用嵌入式资源

  • 流为空。我用另一种方式解决了...谢谢 (2认同)
  • @Diego以我为例,我将传递`ServiceLayer.Resources.Request.GetRainRequest.txt`。您必须获取带有扩展名的整个名称空间,路径和名称。 (2认同)