Возврат каретки/подача строки в файле ресурсов .Net(App_GlobalResources)

Я сохраняю несколько текстов в файле App_GlobalResources.resx.

Тексты должны быть многострочными, и мне нужно, чтобы они содержали фиды строк. Однако, когда я читаю содержимое, все фиды строк исчезают (\r\n печатается, а не как CRLF 10 13 управляющий символ).

Я знаю, что я мог бы обойти это, повторно заменив \r\n (или что-нибудь еще в этом случае) обратно на CRLF, когда я прочитал содержимое, но я задавался вопросом, почему эти явно текстовые файлы resx игнорируют контрольные символы - и CRLF важен - и если кто-нибудь знает, есть ли настройка или что-то, что позволит этому работать естественным образом.

Ответ 1

Я использовал VB.NET Express Edition, чтобы проверить это.

В редакторе ресурсов (где вы можете указать имя ресурса и содержимого строки) поместите содержимое строки, разделенное Shift + Enter.

Предположим, вы хотите ввести

hello  
world

Введите "привет", а затем Shift + Enter и "мир".

Если вы посмотрите на файл Resources.Resx(который представляет собой XML файл), вы увидите, что он создает node с атрибутом xml:space="preserve".

Вторая опция

Кроме того, вы можете вручную отредактировать Resource.resx и изменить содержимое, находящееся в разделе CDATA.

Предположим, что у вас есть строка с именем "example". Найдите его в Resource.resx и измените содержимое, чтобы иметь внутри него секцию CDATA против простого значения.

например.

<data name="example">
<![CDATA[
hello
world
1
2   3
4
]]>  </data>

Ответ 2

Используйте Shift + Enter, чтобы вставить новую строку.

Ответ 3

При использовании интерфейса конструктора resx

  • Если вы на самом деле вводите текст в файл resx, вы должны использовать

    Shift + Enter

    как указано в других ответах.

  • Если вы вставляете текст в resx - Visual Studio будет вставлять текст в том же формате, в котором он уже есть (включая linebreaks/multiline).

При открытии файла resx в формате XML

(найдите файл resx, используя find и replace.., когда вы нажимаете файл на панели "найти результаты", VS откроет файл resx в XML)

Здесь вы можете добавить текст по своему усмотрению (в тегах значений), и форматирование будет сохранено.

Ответ 4

Хорошо, что работало в моей ситуации с использованием тега <br>, как это:

A text with a line break <br> and this goes in the second line.

Здесь есть сообщение с дополнительной информацией: Включение разрыва строки в файле ресурсов resx

Если вы используете механизм просмотра Razor с ASP.NET MVC, вам нужно использовать:

@Html.Raw(ResourceFile.ResourceString)

чтобы он печатал <br> как HTML.

Ответ 5

Можно редактировать *.resx с помощью текстового редактора, чтобы добавить переносы строк.

Вы можете сделать это даже в Visual Studio:

  • Щелкните правой кнопкой мыши файл ресурса
  • Нажмите, чтобы Open with...
  • Выберите XML (Text) Editor with Encoding
  • Нажмите OK
  • Нажмите OK раз для выбора кодировки (автоопределение)
  • Найдите имя (ключ) вашего текста (например, "MY_TEXT")
  • Отредактируйте текст внутри <value>. Для перевода строки просто нажмите Enter. Примечание. Удалите начальные пробелы после переноса строки. Иначе они тоже вставляются.

Протестировано с Visual Studio 2017.

Пример:

  <data name="MY_TEXT" xml:space="preserve">
    <value>Line 1
Line 2
Line 3</value>
  </data>