【问题标题】:How to generate .resx file dynamically in C# in human readable format如何在 C# 中以人类可读格式动态生成 .resx 文件
【发布时间】:2020-03-13 08:42:13
【问题描述】:

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

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

通过这段代码我实现了这一点。

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

我怎样才能动态地实现这一点。

在看到 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);
        }

【问题讨论】:

  • *sigh* 又有文字图片了吗?

标签: c# .net resx


【解决方案1】:

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

您需要将个人ResxDataNodes 添加到文件中。

我使用以下代码生成我的 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"));

可能已经成功了。

【讨论】:

  • 但是当我尝试打开通过 Visual Studio 生成的 .resx 文件时,它说 ResX file Unexpected end of file has occurred。以下元素未关闭:xsd:complexType、xsd:element、xsd:choice、xsd:complexType、xsd:element、xsd:schema、root。第 101 行,位置 76。无法解析.
  • 请将其余代码添加到您的问题中,可能是流和文件的刷新/保存/关闭问题。
  • 是否有不同类型的 .resx 文件?因为动态生成时会生成不可读的 resx 文件,而手动生成时会以可读的形式生成。
猜你喜欢
  • 1970-01-01
  • 2019-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多