如何以人类可读的格式在C#中动态生成.resx文件

我试图使用 ResourceWriter 生成.resx文件,但生成的文件格式不可读

            string filePath = @"C:\Users\Desktop\Resources.resx";
            ResourceWriter writer = new ResourceWriter(filePath);
            writer.AddResource("Hello","World");

通过此代码,我实现了这一目标。

如何以人类可读的格式在C#中动态生成.resx文件

但是我希望资源文件采用这种格式。

如何以人类可读的格式在C#中动态生成.resx文件

我该如何动态地做到这一点。

看到Markus的回答但没有运气,我尝试了这段代码。

 public void CreateResx()
        {
            var resxWriter = new ResXResourceWriter(filePath);

            resxWriter.AddResource(new ResXDataNode("Hello","World"));

            var dataNode = new ResXDataNode("Hello","People")
            {
                Comment = "dummy"
            };

            resxWriter.AddResource(dataNode);
        }
dhtz126 回答:如何以人类可读的格式在C#中动态生成.resx文件

不幸的是,这不是那么简单。

您需要将单个ResxDataNode添加到文件中。

我使用以下代码生成我的RESX文件:

public static byte[] CreateResxContent(Query query)
{
      using (var resxStream = new MemoryStream())
      {
           var resxWriter = new ResXResourceWriter(resxStream);

           if (query.Elements.Count > 0)
           {
               foreach (var element in query.Elements)
               {
                   var dataNode =
                        new ResXDataNode(element.Entries[TextIdIndex],element.Entries[TranslationIndex])
                        {
                            Comment = element.Entries[DescriptionIndex]
                        };

                   resxWriter.AddResource(dataNode);
              }
         }

         resxWriter.Close();

         return resxStream.ToArray();
    }
}

所以您要更改

writer.AddResource("Hello","World");

writer.AddResource(new ResXDataNode("Hello","World"));

可能已经做到了。

本文链接:https://www.f2er.com/2653284.html

大家都在问