Как динамически генерировать файл .resx в формате C# в удобочитаемом формате - PullRequest
0 голосов
/ 13 марта 2020

Я пытался сгенерировать файл .resx, используя ResourceWriter , но созданный файл не в удобочитаемом формате

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

С помощью этого кода я достиг этого.

enter image description here

Но я хочу, чтобы файл ресурсов был в этом формате. enter image description here

Как мне добиться этого динамически.

Я попробовал этот фрагмент кода, увидев ответ Маркуса, но безуспешно.

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

1 Ответ

0 голосов
/ 13 марта 2020

К сожалению, это не так просто.

Вам нужно добавить отдельные ResxDataNode s в файл.

Я использую следующий код для генерации моих файлов 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"));

может уже сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...