Как лучше всего использовать Razor в консольном приложении?C#

Место общения программистов C#
Ответить
Anonymous
 Как лучше всего использовать Razor в консольном приложении?

Сообщение Anonymous »

Я знаю, что подобные вопросы задавались и раньше, но ответы получены только шесть лет назад, а проекты, на которые ссылаются люди, похоже, не поддерживаются.
Я хочу использовать Razor в консольном приложении или библиотеке классов для рендеринга HTML. Я также хотел бы, чтобы Intellisense работал в файлах .cshtml.

Обновление на 2026 год. См. мой обновленный ответ ниже. У меня это работает с файлами .razor и не зависит от сторонних библиотек.

В настоящее время я могу настроить это, выполнив следующие действия:
  • Создать консольное приложение.
  • Добавить файл .cshtml.
  • В Свойствах установите для свойства Custom Tool значение RazorTemplatePreprocessor
Это приводит к распознаванию синтаксиса Razor. Итак, если у вас есть Test.cshtml, он генерирует класс Test, который вы можете использовать следующим образом:

Код: Выделить всё

var test = new Test();
test.Model = "Hi there";
var html = test.GenerateString();

Console.WriteLine(html);
Этого вполне достаточно для моих целей. Однако фактический опыт кодирования в файле .cshtml довольно нарушен:
  • Повсюду красные волнистые линии жалуются на:
  • Невозможно использовать var, потому что это C# 2.
  • Невозможно найти тип или пространство имен различных типов.
  • Вышеупомянутое особенно верно для типов, импортированных из другие библиотеки.
  • Ключевое слово @model не распознается.
  • Intellisense иногда работает, иногда нет.
Как ни странно, если вы просто игнорируете все эти ошибки, HTML на самом деле генерируется правильно, включая использование библиотек и ключевого слова @model, на которое жаловался движок Razor. Однако это вызывает серьезный умственный беспорядок, потому что если у вас есть какое-то количество файлов .cshtml, вы очень быстро столкнетесь с сотнями и тысячами этих ошибок, смешанных с реальными ошибками.
Могу ли я что-нибудь сделать, чтобы реальный процесс кодирования Razor работал больше, как в веб-приложении ASP.NET?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»